DialogBox Send Keys CPU Auslastung

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

akm
Posts: 8
Joined: 19 Mar 2021, 18:26

DialogBox Send Keys CPU Auslastung

Post by akm » 19 Mar 2021, 19:17

Hallo an alle,

nutze seit kurzer Zeit AHK und bin begeistert davon.
Es freut mich sehr, dass es so viele begeisterte Leute dafür gibt.
Ich hab einen kleinen Codeschnipsel für mich erstellt.
Dieser soll zum Hochladen von Dateien dienen.
Wenn sich die DialogBox öffnet zum Auswählen der Datei, greift dann AHK ein.
Er tabbt sich sozusagen durch die DialogBox wählt die erste Datei und drückt auf Enter zum Hochladen.


Das funktioniert auch so wie ich es will. Nur wenn die CPU Auslastung mal kurzeitig ansteigt verliert sich die Tabfolge und die gesendet Keys kommen durcheinander.
Gibt es dafür eine Lösung und könnte man den Code eigentlich eleganter schreiben?

Danke euch für eure Hilfe.

Viele Grüße
Achim

Code: Select all

SetTitleMatchMode, 1
Loop {
Sleep 3000
If WinExist("Datei zum Hochladen auswählen")
{
WinActivate ; Verwendet das von WinExist gefundene Fenster.
Send {TAB}
Sleep 500
Send {TAB}
Sleep 250
Send {TAB}
Sleep 250
Send {TAB}
Sleep 250
Send {TAB}
Sleep 250
Send {TAB}
Sleep 250
Send {TAB}
Sleep 250
Send {TAB}
Sleep 250
Send {TAB}
Sleep 250
Send {Space}
Sleep 250
Send {Enter}
}
}
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: DialogBox Send Keys CPU Auslastung

Post by BoBo » 20 Mar 2021, 03:23

Code: Select all

#Persistent
SetTitleMatchMode, 1
title:="Datei zum Hochladen auswählen"
SetTimer, check, 10
Return

Check:
If WinExist(title) {
    WinActivate,% title
    WinWaitActive,% title
    Send {Tab 9}{Space}{Enter}
    Return
    }
Ungetestet.
just me
Posts: 9482
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: DialogBox Send Keys CPU Auslastung

Post by just me » 20 Mar 2021, 03:52

Moin,

wenn das eine 'klassische' Windows-Dialogbox ist, gibt es wahrscheinlich andere Möglichkeiten. Kannst Du mal ein Bildschirmfoto des Dialogs einstellen?
akm
Posts: 8
Joined: 19 Mar 2021, 18:26

Re: DialogBox Send Keys CPU Auslastung

Post by akm » 20 Mar 2021, 08:49

Hallo an alle,

danke dir Bobo der Code sieht viel übersichtlicher aus :)

Ja genau, es handelt sich um eine typische Windows-Dialogbox.
Ich würde gerne die allererste Datei auswählen und auf Öffnen klicken, sobald die Dialogbox erscheint.
Attachments
dialobox.jpg
dialobox.jpg (41.04 KiB) Viewed 1090 times
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: DialogBox Send Keys CPU Auslastung

Post by BoBo » 21 Mar 2021, 07:51

Warum startest du die Datei nicht direkt? F12::Run % USERPROFILE "\Desktop\alltendatenzsmfuhren.xls"
akm
Posts: 8
Joined: 19 Mar 2021, 18:26

Re: DialogBox Send Keys CPU Auslastung

Post by akm » 24 Mar 2021, 12:15

Hi Bobo,

vielen Dank für deine Hilfe.
Ja ich habs falsch dargestellt.
Es müssen unterschiedliche PDF Dateien auf einer Plattform hochgeladen werden.
Immer wenn ich auf hochladen klicke, öffnet sich das DialogFenster.
Diesen wollte ich automatisieren.
Daher meine Frage, ob es weitere Möglichkeiten gibt, das DialogFenster zu steuern.
Attachments
Unbenannt.jpg
Unbenannt.jpg (65.64 KiB) Viewed 1042 times
effel
Posts: 546
Joined: 16 Jan 2018, 13:34

Re: DialogBox Send Keys CPU Auslastung

Post by effel » 24 Mar 2021, 20:23

BoBo wrote:
20 Mar 2021, 03:23
Das habe ich mal getestet.

Mit den sleeps läuft es bei mir im Editor 'sauber', ich musste allerdings einen Tab dazu legen

Code: Select all

#Persistent
SetTitleMatchMode, 1
title:="Öffnen"
SetTimer, check, 10
Return

Check:
If WinExist(title) {
    WinActivate,% title
    WinWaitActive,% title
    Send {Tab}
    Sleep, 100
    Send {Tab}
    Sleep, 100
    Send {Tab}
    Sleep, 100
    Send {Tab}
    Sleep, 100
    Send {Tab}
    Sleep, 100
    Send {Tab}
    Sleep, 100
    Send {Tab}
    Sleep, 100
    Send {Tab}
    Sleep, 100
    Send {Tab}
    Sleep, 100
    Send {Tab}
    Sleep, 100
    Send {Space}
    Sleep, 100
    Send {Enter}
    Return
    }
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: DialogBox Send Keys CPU Auslastung

Post by BoBo » 25 Mar 2021, 02:33

Du kannst, da dir das Verzeichnis vorab bekannt ist, ein Listing des directories abfragen und anschließend über ein ControlSend* (in die Dateiname-Eingabezeile der Dialogbox) direkt den kompletten Pfad der jeweiligen Datei übergeben. Damit fällt die unselige Klickerei weg. Anschließender ControlSend/-Click auf "Öffnen" und gut ist.

* oder Alt+n ausführen.
just me
Posts: 9482
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: DialogBox Send Keys CPU Auslastung

Post by just me » 25 Mar 2021, 06:12

@akm,

schau Dir das Fenster doch mal mit dem AHK 'Window Spy' an. Du findest ihn im Startmenü unter AutoHotkey oder im Traymenü eines laufenden AHK-Skripts. Du solltest oben rechts die Option 'Follow Mouse' auswählen. Dann notierst Du Dir die Angaben zum Fenster (Titel, Klasse, Exe) und die Angaben zum Control mit den Dateien und sagst uns, was da gefunden wurde. Vielleicht geht es dann auch anders.
akm
Posts: 8
Joined: 19 Mar 2021, 18:26

Re: DialogBox Send Keys CPU Auslastung

Post by akm » 26 Mar 2021, 04:17

Hallo an alle,

vielen vielen Dank für eure Unterstützung.
@effel
Danke dieser Code funktioniert auch sehr sauber bei mir.
@BoBo
Das hört sich nach einer besseren Variante an, die ich ausprobieren muss. Danke für den Tipp :)
@just me
Titel: Datei zum Hochladen auswählen
ahk_class: #32770
ahk_exe: IEXPLORER.EXE
ahk_pid: 9772
just me
Posts: 9482
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: DialogBox Send Keys CPU Auslastung

Post by just me » 26 Mar 2021, 04:19

Moin,

danke erstmal. Die Angaben zum Control mit der Dateiliste fehlen leider noch.
akm
Posts: 8
Joined: 19 Mar 2021, 18:26

Re: DialogBox Send Keys CPU Auslastung

Post by akm » 26 Mar 2021, 11:21

Tut mir leid, aber was meinst du genau mit den Angaben zum Control der Dateiliste?
Bin nicht sehr versiert in dem Gebiet.
just me
Posts: 9482
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: DialogBox Send Keys CPU Auslastung

Post by just me » 26 Mar 2021, 11:49

Ich meine das große Control auf der rechten Seite, in dem Dateinamen und die Dateieigenschaften stehen.
akm
Posts: 8
Joined: 19 Mar 2021, 18:26

Re: DialogBox Send Keys CPU Auslastung

Post by akm » 28 Mar 2021, 05:45

@just me
Vielen vielen dank für die Hilfe.
Wenn ich die DialogBox anklicke bekomme ich nur diese Angaben wie auf dem Screenshot.
Oder mache ich da etwas falsch?
Attachments
Unbenannt12.jpg
Unbenannt12.jpg (144.43 KiB) Viewed 857 times
just me
Posts: 9482
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: DialogBox Send Keys CPU Auslastung

Post by just me » 28 Mar 2021, 05:50

Moin,

wenn Du 'Follow Mouse' ausgewählt hast und mit der Maus über den ersten Dateinamen gehst, sollte sich der Bereich 'Control Under Mouse Position' füllen.
akm
Posts: 8
Joined: 19 Mar 2021, 18:26

Re: DialogBox Send Keys CPU Auslastung

Post by akm » 29 Mar 2021, 04:02

Super danke dir für deine Geduld mit mir :D
Das sagt Windows Spy dazu, wenn ich auf eine Datei zum Hochladen klicke.
Attachments
wpsy.jpg
wpsy.jpg (47.14 KiB) Viewed 812 times
just me
Posts: 9482
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: DialogBox Send Keys CPU Auslastung

Post by just me » 29 Mar 2021, 11:21

Moin,

das hilft weiter. Ich muss Dich jetzt aber um etwas Geduld bitten. Ich schaue mal, ob mir etwas einfällt.
just me
Posts: 9482
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: DialogBox Send Keys CPU Auslastung

Post by just me » 31 Mar 2021, 06:56

Moin,

hier kommt noch ein Versuch einer einfachen Lösung:

Code: Select all

#NoEnv
Fenster := "Datei zum Hochladen auswählen ahk_class #32770"
^+w::
If WinExist(Fenster) {
   WinActivate
   WinWaitActive, , , 1
   If (Errorlevel) {
      MsgBox, 16, Fehler!, Das Auswahlfenster konnte nicht aktiviert werden!
      Return
   }
   ControlFocus, DirectUIHWND2
   Send, %A_Space%
   ControlClick, Button1
}
Return
Vielleicht läuft das stabil.
akm
Posts: 8
Joined: 19 Mar 2021, 18:26

Re: DialogBox Send Keys CPU Auslastung

Post by akm » 02 Apr 2021, 09:14

Vielen Dank.
Die Lösung funktioniert sauber und stabil. :)
just me
Posts: 9482
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: DialogBox Send Keys CPU Auslastung

Post by just me » 02 Apr 2021, 11:02

Gut so! ;)
Post Reply

Return to “Ich brauche Hilfe”