Ah super!
Vielen Dank!
Bin eben hierher zurückgekehrt, um den Thread abzuschließen: Hab nämlich ausgiebig direkt in der CMD getestet und die gleichen Ergebnisse erhalten.
Nun weiß ich wenigstens, wo ich das Defizit hab.
Ah super!
Vielen Dank!
Bin eben hierher zurückgekehrt, um den Thread abzuschließen: Hab nämlich ausgiebig direkt in der CMD getestet und die gleichen Ergebnisse erhalten.
Nun weiß ich wenigstens, wo ich das Defizit hab.
Voilà - und schon läuft's
Hi UEZ,
eben habe ich mir den Screenshooter heruntergeladen - die Beschreibung hat mich angelockt.
Leider war ich nicht erfolgreich beim Ausführen:
Erst konnte ein include nicht ausgeführt werden:
In Zeile 77 wird _GDIPlus_GIFAnim.au3 mit einem absoluten Pfad aufgerufen
Das konnte ich ja leicht ändern...
Dann aber registrierte Windows offenbar (einen) Fehler beim gdiplus.dll Aufruf. (s.u.)
Nachdem Werfault.exe den Fehler "abgefrühstückt" hat, stoppt die Ausführung des Scripts.
Das Script selbst hat keinen Fehler ausgegeben.
Getestet unter Windows10 Pro 64bit 10.0.17134 mittels
AutoIt3_x64.exe, Version: 3.3.14.5 und auch
compiliert mit der zugehörigen Aut2exe_x64.exe (ohne UPX).
Für mich ist das gerade nicht tragisch - hab ganz andere Probleme zu lösen.
Für Dich ist es aber vielleicht interessant, zu wissen?
Best Regards
Jens
Hier die Eventlog-Einträge...
===.au3===
Name der fehlerhaften Anwendung: AutoIt3_x64.exe, Version: 3.3.14.5, Zeitstempel: 0x5aaa71d3
Name des fehlerhaften Moduls: gdiplus.dll, Version: 10.0.17134.523, Zeitstempel: 0xe1b52ff9
Ausnahmecode: 0xc0000005
Fehleroffset: 0x00000000000789b2
ID des fehlerhaften Prozesses: 0x4a04
Startzeit der fehlerhaften Anwendung: 0x01d4c15f4e40df6a
Pfad der fehlerhaften Anwendung: C:\PortableApps\Autoit-v3.3.14.5\AutoIt3_x64.exe
Pfad des fehlerhaften Moduls: C:\WINDOWS\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.17134.523_none_2c2b90be8af9a424\gdiplus.dll
Berichtskennung: 9d8c4afd-7616-475d-8024-d8eac8c64ff5
Vollständiger Name des fehlerhaften Pakets: <leer>
Anwendungs-ID, die relativ zum fehlerhaften Paket ist: <leer>
===.exe===
Name der fehlerhaften Anwendung: Windows Screenshooter.exe, Version: 1.8.2.0, Zeitstempel: 0x5c6056c1
Name des fehlerhaften Moduls: gdiplus.dll, Version: 10.0.17134.523, Zeitstempel: 0xe1b52ff9
Ausnahmecode: 0xc0000005
Fehleroffset: 0x00000000000789b2
ID des fehlerhaften Prozesses: 0x170c
Startzeit der fehlerhaften Anwendung: 0x01d4c161002c7848
Pfad der fehlerhaften Anwendung: D:\Development\Res\AutoIt Windows Screenshooter v1.82 Build 2018-12-13\Windows Screenshooter.exe
Pfad des fehlerhaften Moduls: C:\WINDOWS\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.17134.523_none_2c2b90be8af9a424\gdiplus.dll
Berichtskennung: 2490f8fb-a543-49b4-9d66-8355ad945cd3
Vollständiger Name des fehlerhaften Pakets: <leer>
Anwendungs-ID, die relativ zum fehlerhaften Paket ist: <leer>
Hallo an Alle,
momentan versuche ich mich am Ansprechen der WMI via AutoIt.
Das Auslesen von Informationen klappt schon, nur beim Aufruf von Methoden scheitert es...
Mein eigentl. Ziel (TriggerSchedule aus \\root\.\ccm PATH sms_client) kann ich gerade mangels Rechner mit SMS Client nicht testen.
Da hab ich mir einfach eine andere Methode zum Lernen herausgesucht: "Dismount" aus \\.\root\cimv2 Win32_Volume
Meine Annahme: Wenn ich erst mal das richtige Objekt herausgefischt habe, kann ich mit <Objekt>.<Methode> ( Parameter ) den eigentlichen Call ausführen.
Mit Dismount klappt das schon mal nicht: Im Log landet der Returnwert "0" was laut Microsoft für diese Methode "success" bedeutet. Nur wird der Datenträger nicht dismounted.
Das Ganze mit DefragAnalysis durchexerziert ==> hier bekomme ich "3" zurück - also kann der Code nicht total falsch sein, weil er zumindest eine Rückgabe <>0 ins Log schreibt. Nur sehe ich keine Aktivität am USB-Stick.
Also Defrag versucht - spätestens das müsste dann ja zu sehen sein (Blinken am Stick) ==> wieder "3" zurückerhalten ("Volume Dirty Bit Is Set") aber keine Aktivität.
Auch das Setzen von #RequireAdmin brachte keine Änderung.
Ich vermute, dass ich etwas grundsätzlich falsch mache/nicht verstanden hab und habe auch nach vielen Stunden keine Erleuchtung beim Studium des Forums oder anderer Netzseiten erlebt.
Wäret Ihr so nett, mir den nötigen Klapps auf den Hinterkopf zu geben?
(Ich habe mal ein paar Kommentar-Zeilen drin gelassen, die zeigen, mit was ich so der Reihe nach experimentiert hab...)
Gruß
Jens
;#RequireAdmin
Global $s_LogFile = @ScriptDir & '\' & @ScriptName & '.log'
Local $WMIService = ObjGet('winmgmts:\\.\root\cimv2')
;Local $WMIVolumes = $WMIService.ExecQuery('Select * from Win32_Volume WHERE DriveLetter = "E:\\"')
;Local $WMIVolumes = $WMIService.ExecQuery('Select * from Win32_Volume WHERE Label = "TEST"')
Local $WMIVolumes = $WMIService.ExecQuery('Select * from Win32_Volume WHERE Label = "CORSAIR1"')
;Local $WMIVolumes = $WMIService.ExecQuery('Select * from Win32_Volume')
_WriteLog ('---')
If IsObj($WMIVolumes) Then
For $Volume In $WMIVolumes
_WriteLog( '$Volume.Label ' & $Volume.Label)
_WriteLog( ' $Volume.DriveLetter ' & $Volume.DriveLetter)
_WriteLog( ' $Volume.DriveType ' & $Volume.DriveType)
_WriteLog( ' $Volume.DeviceID ' & $Volume.DeviceID)
;#cs
;If $Volume.Label = 'TEST' Then ; < SD Card
If $Volume.Label = 'CORSAIR1' Then ; < USB Stick
_WriteLog ('---')
;Local $Dismount = $Volume.Dismount ( FALSE , FALSE ) ; < Force , Persistent
;Local $Dismount = $Volume.Dismount ( TRUE , FALSE ) ; < Force , Persistent
;Local $Dismount = $Volume.Dismount ()
;Local $DefragAnalysis = $Volume.DefragAnalysis ()
;Local $Defrag = $Volume.Defrag ()
Local $Defrag = $Volume.Defrag ( TRUE ) ; < Force
;_WriteLog ( '$Dismount = ' & $Dismount)
;_WriteLog ( '$DefragAnalysis = ' & $DefragAnalysis)
_WriteLog ( '$Defrag = ' & $Defrag)
_WriteLog ('---')
EndIf
;#ce
Next
_WriteLog ('---')
EndIf
; SECTION: Supporting Functions
Func _DateTimeString()
Local $sDateTimeString = @YEAR & '-' & @MON & '-' & @MDAY & '_' & @HOUR & '-' & @MIN & '-' & @SEC & '_' & @MSEC
Return ($sDateTimeString)
EndFunc ;==>_DateTimeString
Func _WriteLog ($s_Entry)
Local $h_LogFile = FileOpen ( $s_LogFile , 1 )
if $s_Entry = '' Then
Local $i_Write = FileWriteLine ($h_LogFile , '' )
ElseIf $s_Entry = '---' Then
Local $i_Write = FileWriteLine ($h_LogFile , '------------------------------------------------------------------------' )
ElseIf $s_Entry = '===' Then
Local $i_Write = FileWriteLine ($h_LogFile , '========================================================================' )
Else
Local $i_Write = FileWriteLine ($h_LogFile , _DateTimeString() & ' ' & $s_Entry )
EndIf
FileClose($h_LogFile)
EndFunc ;==>_WriteLog
Alles anzeigen
Vielen Dank schon mal - dann werde ich mich in _IEAttach noch tiefer reinarbeiten und melde mich ggf. mit Detailfragen noch mal.
"Aber warum rufst du den IE nicht direkt aus deinem Skript auf?"
Der Plan war eigentlich, zu jeder Zeit während man manuell auf der Seite schon hantiert hat, das Script zu starten und dann mit genau der Instanz (also genau dem Object, auch kein neuer Tab mit gleicher URL) automatisiert weiter zu interagieren. Das Script soll also nicht am Anfang des Handlings stehen und z.B. nicht stundenlang unnütz herum-idlen bevor es mal Arbeit bekommt. Außerdem müsste dann ja wohl auch die Browserinstanz offen gehalten werden: Manuelles Schließen und neu Öffnen wäre dann ja auch ein Showstopper, soweit ich es verstehe.
Eines der Anwendungsgebiete, die ich im Auge habe: In einem web-basierten Ticketsystem in einem Rutsch mehrere Änderungen an einem Ticket vorzunehmen - und zwar in dem, dessen Nummer gerade in der Windows Zwischenablage liegt und das in irgend einem Tab bereits geöffnet ist.
Da dort auch u.a. noch zu speichernder Inhalt in Textfeldern nicht verloren gehen darf, muss ich zwingend genau diesen Browsertap verwenden.
Und: Ich möchte mehrere "Aktionen" definieren (Script mit GUI & Buttons) - weiß also beim Start des Scripts weder, mit welcher Instanz es arbeiten wird, noch, was es tun wird.
Ein anderes: Nachdem in einem Spiel eine Aktion bereits läuft, die zum Abschluss später noch ein paar Klicks braucht, soll bei Bedarf das Script diese ausführen.
Hallo zusammen,
bin nicht mehr so ganz neu mit AutoIt und trotzdem hab ich folgende Frage nicht selbst beantworten können:
(Wie) Kann ich IE.au3 auf eine bereits geöffnete Site anwenden.
Also ohne, dass mit _IECreate('<URL>') erst eine Browser-Instanz erzeugt wird.
Soweit ich das verstehe, wird mit _IECreate das DOM Objekt "Browser" erzeugt und eben mit der Zuweisung zu einer Variablen nutzbar gemacht.
Die anderen Funktionen nutzen dan den Objektbaum. Das ist genau, was ich brauche.
Aber wie - falls überhaupt - kann ich auf das Browser-Ojekt einer bereits geöffneten Instanz zugreifen?
Mein laienhafter Versuch über WinGetHandle war erfolglos (klar - ein WinHandle ist nun mal kein DOM Objekt).
Gibt es irgend einen Weg vom einen zum anderen zu kommen, den ich einfach nur noch nicht gefunden habe?
Mit _IEAttach habe ich es erfolglos versucht:
_IEAttach( '<TEXT>' , 'windowtitle' ) liefert genauso kein Objekt zurück wie der Weg über den 'url' modus.
Autoit-v3.3.14.5
IE 11.285.171340
Vielen Dank für Euren Rat
der Jens
P.S.: _IECreate('<URL>') funktioniert zwar, kreiert aber eben eine neue Instanz - unelegant.