Kann Autoit warten bis ein bestimmtes Gerät an den PC angeschlossen wird?

  • 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.

  • 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, ...)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • 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 :)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • ich hab mal eine dll auf ner delphi-seite gefunden

    Spoiler anzeigen
    [autoit]

    Const $SO_CPU = 1
    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)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Dll=DllOpen("msic.dll")
    ;$Ret=DllCall($Dll,"long","ShowSystemOverviewModal")
    DllCall($Dll,"none","GenerateXMLReport","dword",$SO_All,"str","Test.xml")
    DllClose($Dll)

    [/autoit]

    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 :)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • 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.

    Einmal editiert, zuletzt von senden9 (26. Mai 2008 um 18:43)

  • 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".

    :P

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • hab alle eintrage verglichen, nix hat sich geändert.
    gibt es sonst noch eine methode?

  • Dann vielleicht noch das:
    Ist sicherlich nicht die beste methode da es nicht auf allen PCs funktioniert und so:

    [autoit]

    While 1
    $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

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • ist das kein wechseldatenträger?
    BLUB?
    okeee scheisse wars :D
    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...

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • 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.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • 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 = "."
    Global $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")

    [/autoit] [autoit][/autoit] [autoit]

    $colEvents = $objWMIService.ExecNotificationQuery _
    ("Select * From __InstanceOperationEvent Within 5 Where " _
    & "TargetInstance isa 'Win32_LogicalDisk'")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $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
    WEnd

    [/autoit]

    Mega