Avatar billede koppelgaard Praktikant
03. juli 2008 - 13:29 Der er 19 kommentarer og
1 løsning

FileSystemWatcher hold øje med om en cd sættes i cd-drev

Jeg vil gerne holde høje med om der sættes en cd i mit d-drev og herefter kopiere jpg-filer til en bestemt destination.
Jeg vil gerne bruge FileSystemWatcher (system.io)

FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = path;

Får desværre en fejl på path = @"d:\" når der ikke er nogen cd i.
Kan det løses ?


Michael
Avatar billede aaberg Nybegynder
03. juli 2008 - 15:04 #1
Du kan ikke bruge en FileSystemWatcher til dette. Du kan gøre det ved hjælp af System.Management klasserne og WMI. Jeg skal se om jeg kan finde et eksempel.
Avatar billede aaberg Nybegynder
03. juli 2008 - 15:08 #2
Tjek dette link. Jeg tror det besvare dit spørgsmål.
http://bytes.com/forum/thread233339.html
Avatar billede koppelgaard Praktikant
03. juli 2008 - 16:04 #3
Det ser ud til at være det, jeg skal bruge.
sender du et svar ?
Avatar billede aaberg Nybegynder
04. juli 2008 - 07:58 #4
svar :-)
Avatar billede koppelgaard Praktikant
05. juli 2008 - 12:00 #5
Der var jeg lidt for hurtig.
Når jeg starter progammet op skal jeg åbenbart fortage et valg.
Men hvilket ?


Michael
Avatar billede aaberg Nybegynder
06. juli 2008 - 21:00 #6
Jeg ved ikke helt hvad du mener med at du skal foretage et valg?

Bare kør koden og vent op til 15 sekunder, så vil navnet på cden blive skrevet på konsol vinduet. Grunden til der er en Console.ReadLine() i programmet, er for at konsolvinduet ikke skal lukke før du når at indsætte en cd.

Koden tjekker cd drevet hver 15. sekund. Hvis du vil have den til at tjekke oftere, kan du ændre WqlEventQuery.WithinInterval propertien, som i eksemplet bliver sat til 15 sekunder.
Avatar billede koppelgaard Praktikant
07. juli 2008 - 08:06 #7
Nåå, jeg gav mig ikke til til at studere koden nærmere, valgte den nemme løsning og spørge. Tak, her er dine point.

Kan denne kodes mon også bruges, hvis et ekstra drev tilsluttes (ekstern) harddisk?
Avatar billede aaberg Nybegynder
07. juli 2008 - 08:24 #8
Det er muligt!

Prøv at ændre på WqlEventQuery.Condition propertien. Prøv at fjerne "TargetInstance.DriveType = 5". Så vil jeg umiddelbart tro at den kan detektere harddiske, usb-pins og alt muligt andet. Dette har jeg dog ikke testet.
Avatar billede koppelgaard Praktikant
07. juli 2008 - 17:41 #9
Sejt !
Prøver
Avatar billede koppelgaard Praktikant
08. juli 2008 - 07:34 #10
Det virker med cd-ere men ikke med usb-pins, selvom jeg fjerner TargetInstance.DriveType = 5:

q.Condition = @"TargetInstance ISA 'Win32_LogicalDisk'";// and  TargetInstance.DriveType = 5";
Avatar billede koppelgaard Praktikant
08. juli 2008 - 07:38 #11
Og dog .. men der går lang tid !
2 min
Avatar billede koppelgaard Praktikant
08. juli 2008 - 07:47 #12
OM igen. Hvis jeg fjerne TargetInstance.DriveType = 5: kører everten spontant uden at jeg har taget noget USB-pin eller cd ud eller sat i.
Jeg ved ikke, hvad det er den registrere ?

Michael
Avatar billede aaberg Nybegynder
08. juli 2008 - 07:56 #13
prøv dette:

q.Condition = @"TargetInstance ISA 'Win32_DiskDrive' or (TargetInstance ISA 'Win32_LogicalDisk' and TargetInstance.DriveType = 5)";
Avatar billede koppelgaard Praktikant
08. juli 2008 - 08:44 #14
Det vil jeg prøve - tak
Avatar billede koppelgaard Praktikant
10. juli 2008 - 07:26 #15
Næ nu virker det slet ikke.
Avatar billede aaberg Nybegynder
10. juli 2008 - 08:18 #16
Hmm, jeg skal se på det i aften, hvis jeg får tid.

:-)
Avatar billede koppelgaard Praktikant
10. juli 2008 - 15:08 #17
Fandt lige dette her:
http://www.codeproject.com/KB/system/DriveDetector.aspx
Har ikke kikket nærmere på det.

Michael
Avatar billede koppelgaard Praktikant
10. juli 2008 - 18:01 #18
Ovenstående virker egentlig rimelig godt.
Men det er ligesom min eksterne harddisk kan blokere processen.
Men det virker ellers både med usbdrev og med cd ud og ind.

Michael
Avatar billede aaberg Nybegynder
11. juli 2008 - 09:42 #19
Ok, godt du fandt ud af det :-)

~aaberg
Avatar billede koppelgaard Praktikant
12. juli 2008 - 10:57 #20
Virker dog ikke på indsat kamerakort. Men her er nok ikke noget at gøre.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester