Witam!
Jestem dość zielony z programowania, ale kombinuję jak mogę :)
Przeglądając MSDN znalazłem fragment kodu, który by mi się przydał. Programik ma siedzieć sobie w tle i badać co jakiś czas czy istnieje plik x na partycji y.
Wszystko zdaje się być jak należy (z przykładu na msdn - podobny kodzik miał być elementem nieco większego programu):
using System.Diagnostics;
using System.ComponentModel;
namespace zgf_tc_starter
{
class MyProcess
{
const int ERROR_FILE_NOT_FOUND = 2;
const int ERROR_ACCESS_DENIED = 5;
void Tc()
{
Process myProcess = new Process();
try
{
myProcess.StartInfo.FileName = @"n:\mount.bat";
//myProcess.StartInfo.CreateNoWindow = false;
myProcess.Start();
}
catch (Win32Exception e)
{
if (e.NativeErrorCode == ERROR_FILE_NOT_FOUND)
{
Console.WriteLine(e.Message);
}
else if (e.NativeErrorCode == ERROR_ACCESS_DENIED)
{
Console.WriteLine(e.Message + " permission denied");
}
//Console.WriteLine(e);
}
}
static void Main(string[] args)
{
Console.WriteLine("\n Testujemy, czy zechce odczytac :) Wersja 0.0.2.9\n\n");
MyProcess myProcess = new MyProcess();
myProcess.Tc();
Console.ReadKey();
}
}
}
Niestety, kiedy w czytniku kart nie znajduje się nośnik (mimo braku nośnika, litera dysku w oknie Mój komputer jest przydzielona!), system Windows wyświetla komunikat, że w urządzeniu nie znajduje się dysk + trzy przyciski Anuluj, Próbuj ponownie, Kontynuuj - http://www.kokosoftware.pl/wrzuc/images/img_7892593.jpg
Oczywiście, nie chcę, aby ten komunikat się pojawiał, tylko aby program działając w tle "złapał" to wydarzenie po cichu i zareagował odpowiednio.
Przejrzałem chyba wszystkie możliwe błędy Win32 i nie znalazłem żadnego, który by na to zaradził.
Może podejść do tego problemu zupełnie inaczej? Jak inaczej sprawdzać, czy w napędzie N: znajduje się nośnik z danym plikiem?
Z góry dziękuję za podpowiedzi!
ps - oczywiście, nie żądam od Was gotowca, ino jakichś podpowiedzi i np. linków do dokumentacji w msdn, czy innych tutoriali :)