Kann Autoit warten bis ein bestimmtes Gerät an den PC angeschlossen wird?
Ich meine so was wie WinWait nur für ein Gerät.
Kann Autoit warten bis ein bestimmtes Gerät an den PC angeschlossen wird?
-
- [ offen ]
-
senden9 -
25. Mai 2008 um 17:42 -
Geschlossen -
Erledigt
-
-
was für ein Gerät soll das denn sein?
HDD, Drucker, USB-Stick...?
Soweit ich weiß gibt es dafür keine "einfache Funktion".
(wäre wahrscheinlich bei der Vielzahl an möglichen Geräten wohl auch etwas viel verlangt)
Da wirst Du um eine eigen gestrickte Script-Lösung nicht herumkommen, die halt in einer Schleife bestimmte Specs des Gerätes abfragt.
(Einträge in der Registry, LW-Buchstaben, ...) -
Es ist ein Handy(Nokia E61) das sich als
Type:Portable Devices Hersteller:Nokia Ort:356211002729526
Type:Modems Hersteller:Nokia Ort:Nokia Device Bus
...
anmeldet. -
Hallo senden9,
ich hab mal mangels Deines Handy's einen Test mit meinem USB-Stick gemacht.
Das Prinzip sollte aber das selbe bleiben.
mit Regmon.exe ( bei Google nach Sysinternals suchen) und gesetzten Filtern überprüft,
welche Reg-Schlüssel geschrieben werden beim Anschließen und Entfernen meines USB-Sticks.Dem entsprechend über eine Schleife einen dieser Schlüssel überwachen auf Existenz.
Musst natürlich schauen, dass der Reg-Schlüssel auch nur dein Handy betrifft -
ich hab mal eine dll auf ner delphi-seite gefunden
Spoiler anzeigen
[autoit]Const $SO_CPU = 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Const $SO_Machine = 2
Const $SO_Devices = 4
Const $SO_Display = 8
Const $SO_Network = 10
Const $SO_Media = 20
Const $SO_Memory = 40
Const $SO_Storage = 80
Const $SO_USB = 100
Const $SO_Engines = 200
Const $SO_APM = 400
Const $SO_Disk = 800
Const $SO_OS = 1000
Const $SO_Printers = 2000
Const $SO_Software = 4000
Const $SO_Startup = 8000
Const $SO_Processes= 10000
Const $SO_Monitor = 20000
Const $SO_All = BitOR($SO_CPU,$SO_Machine,$SO_Devices,$SO_Display,$SO_Network,$SO_Media,$SO_Memory,$SO_Storage,$SO_USB,$SO_Engines,$SO_APM,$SO_Disk,$SO_OS,$SO_Printers,$SO_Software,$SO_Startup,$SO_Processes,$SO_Monitor)$Dll=DllOpen("msic.dll")
[/autoit]
;$Ret=DllCall($Dll,"long","ShowSystemOverviewModal")
DllCall($Dll,"none","GenerateXMLReport","dword",$SO_All,"str","Test.xml")
DllClose($Dll)speichert die system-infos in eine xml-datei
vielleicht hilft dir das weiter...
lgE
-
ich hab mal eine dll auf ner delphi-seite gefunden
Spoiler anzeigen
[autoit]Const $SO_CPU = 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Const $SO_Machine = 2
Const $SO_Devices = 4
Const $SO_Display = 8
Const $SO_Network = 10
Const $SO_Media = 20
Const $SO_Memory = 40
Const $SO_Storage = 80
Const $SO_USB = 100
Const $SO_Engines = 200
Const $SO_APM = 400
Const $SO_Disk = 800
Const $SO_OS = 1000
Const $SO_Printers = 2000
Const $SO_Software = 4000
Const $SO_Startup = 8000
Const $SO_Processes= 10000
Const $SO_Monitor = 20000
Const $SO_All = BitOR($SO_CPU,$SO_Machine,$SO_Devices,$SO_Display,$SO_Network,$SO_Media,$SO_Memory,$SO_Storage,$SO_USB,$SO_Engines,$SO_APM,$SO_Disk,$SO_OS,$SO_Printers,$SO_Software,$SO_Startup,$SO_Processes,$SO_Monitor)$Dll=DllOpen("msic.dll")
[/autoit]
;$Ret=DllCall($Dll,"long","ShowSystemOverviewModal")
DllCall($Dll,"none","GenerateXMLReport","dword",$SO_All,"str","Test.xml")
DllClose($Dll)speichert die system-infos in eine xml-datei
vielleicht hilft dir das weiter...
lgE
bei deiner Lösung ist mein PC mit Bluescreen abgestürzt? -
Also ich habe das auch per Regmon und meinem USB-Stick gemacht
War ganz simpel:
In einer While Schleife habe ich nachgeschaut ob 3 Registry einträge existieren bzw. den richtigen Wert haben wenn ja kam bei mir einfach mal zum Test eine MsgBox, ansonsten lief alles weiter
Sollte mit deinem Handy genau gleich sein... evt. kannst du das Programm dann auch als Dienst laufen lassen Find grad den Link nich aber ich hab mal auf ner Seite gelesen wie man Programme als Dienst laufen lassen kann -
So ich hab die suche auf Nokia beschränkt.
Hier ist der LOG.
hab selbst schon herum versucht aber nicht geschafft.Könnte das bitte jemand mal durch schauen?
Wenn ja müsst ihr am ende müsst ihr das .txt entfernen. -
Naja, dann versuch es doch mal mit der Zeile 20:
20 18:19:05 services.exe:980 QueryValue HKLM\SYSTEM\ControlSet001\Enum\ROOT\WPD\0000\FriendlyName SUCCESS "Nokia E61"Schau einfach mal nach, was in diesem Reg-Schlüssel steht, wenn dein Handy nicht am PC angeschlossen ist.
Wenn der Wert sich ändert hast Du doch schon die Möglichkeit mittels einer Schleife und RegRead eine Abfrage zu "basteln".
-
hab alle eintrage verglichen, nix hat sich geändert.
gibt es sonst noch eine methode? -
Dann vielleicht noch das:
[autoit]
Ist sicherlich nicht die beste methode da es nicht auf allen PCs funktioniert und so:While 1
[/autoit]
$type = DriveGetType("F:\") ;Der laufwerksbuchstabe von deinem Nokia halt
$label = DriveGetLabel("F:\")
If $type = "Removable" And $label = "Nokia was auch immer" Then ;deine Aktion (was auch immer)
WEnd -
- Offizieller Beitrag
;Der laufwerksbuchstabe von deinem Nokia halt
Das geht nicht, da kein Laufwerksbuchstabe angelegt wird. Im Explorer erscheint dann je nach Modell und Installation z.B. "Nokia Phone Browser" (jedenfalls ist es bei mir so)
-
ist das kein wechseldatenträger?
BLUB?
okeee scheisse wars
Naja aber irgendwie identifiziert der PC das gerät ja auch?... wie schauts denn mit einem Prozess oder Dienst aus der dann vllt ausgeführt wird, das könnte man eventuell noch abfragen... -
also ich bin mir ziemlich sicher, dass sich einer der Registry-Werte ändert aus dem LOG.txt von Senden9.
Je nachdem ob das Gerät angeschlossen ist oder nicht.Ist halt ein wenig mühsam, einen der Werte zu finden, der sich explizit ändert.
Einen Anderen Weg sehe ich spontan nicht.
-
Ja, es gibt ja Werte, die mit SetValue geschrieben werden. (Einträge 1-6 und 8 ) einen von denen musst du halt testen
-
- Offizieller Beitrag
Spoiler anzeigen
[autoit]Global $strComputer = "."
[/autoit] [autoit][/autoit] [autoit]
Global $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")$colEvents = $objWMIService.ExecNotificationQuery _
[/autoit] [autoit][/autoit] [autoit]
("Select * From __InstanceOperationEvent Within 5 Where " _
& "TargetInstance isa 'Win32_LogicalDisk'")While 1
[/autoit]
$objEvent = $colEvents.NextEvent
If $objEvent.TargetInstance.DriveType = 2 Then
Select
Case $objEvent.Path_.Class()="__InstanceCreationEvent"
Consolewrite("Drive " & $objEvent.TargetInstance.DeviceId & " has been added." & @CR)
Case $objEvent.Path_.Class()="__InstanceDeletionEvent"
Consolewrite("Drive " & $objEvent.TargetInstance.DeviceId & " has been removed."& @CR)
EndSelect
EndIf
WEndMega
-
Xenobiologist : woher kann man sowas?
ich blick da null durch :D:D