Handling Checkbox

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

WPLPHSS
Posts: 162
Joined: 04 Feb 2017, 05:34

Handling Checkbox

28 May 2020, 15:18

Wie kann AHK erkennen, ob eine Checkbox aktiviert ist (also angehakt)? Die Checkbox ist durch verschiedene Arbeitsabläufe mal angehakt und mal nicht.

AHK soll die Checkbox dazu bewegen, dass sie nicht angehakt ist.

Wie würde ein Skript hierzu aussehen? Vielen Dank.

Code: Select all

!m:: ; Vorblatt drucken ja/nein
MouseClick, left, 78, 137
Return
UnReALiTyy
Posts: 223
Joined: 06 Jun 2017, 11:38

Re: Handling Checkbox

28 May 2020, 16:13

WPLPHSS wrote:
28 May 2020, 15:18
Wie kann AHK erkennen, ob eine Checkbox aktiviert ist (also angehakt)? Die Checkbox ist durch verschiedene Arbeitsabläufe mal angehakt und mal nicht.

AHK soll die Checkbox dazu bewegen, dass sie nicht angehakt ist.

Wie würde ein Skript hierzu aussehen? Vielen Dank.

Code: Select all

!m:: ; Vorblatt drucken ja/nein
MouseClick, left, 78, 137
Return
Ist eine Checkbox abgehakt ist dessen Variable True also Wahr.
Prüfen kann man dies also ganz einfach so.

Code: Select all

Gui, Add, CheckBox, gCheck1 vCheckme, Test Box
Gui, Show, autosize

Check1:
Gui, Submit, nohide
	if (Checkme)
		;CheckBox aktiv
	else
		;CheckBox inaktiv
return
Diese dann noch per Script an oder abzuhaken geht auch ganz einfach so:
https://ahkde.github.io/docs/commands/Control.htm#Check
WPLPHSS
Posts: 162
Joined: 04 Feb 2017, 05:34

Re: Handling Checkbox

29 May 2020, 02:53

Vielen Dank. Wie und wo füge ich das Skript in mein Skript ein? Es sind mehrere Checkboxen in dem Programmmenü enthalten.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Handling Checkbox

29 May 2020, 03:05

Was nicht eindeutig ist - handelt es sich um eine GUI welche du mit AHK generierst, oder eine andere Anwendung? Bitte um Klärung.

Dein Beipiel mit dem Hotkey, lässt letzteres vermuten. Sollte das Checkbox-Control den Focus haben, wäre das Senden eines Leerzeichens (Druck auf die Leertaste) der übliche Weg einen "Haken zu setzen". Ein erneuter Druck der Taste entfernt/toggled ihn dann eben.

Erscheint sinnvoll dazu mehr von Deinem Code zu sehen ...
WPLPHSS
Posts: 162
Joined: 04 Feb 2017, 05:34

Re: Handling Checkbox

29 May 2020, 03:08

Eine externe Software. Die Checkboxen werden durch Leerzeichen aktiviert bzw. deaktiviert.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Handling Checkbox

29 May 2020, 04:19

Generell empfiehlt es sich das jeweilige Control zuverläßig anzusprechen, damit etwaige Übergaben keine Fehlfunktion/Fehlbedienung bewirken (gerade bei Abwesenheit). Die von dir im Script genutzte Maus-Option wäre im professionellen Umfeld eher zweite Wahl, da sich die 'Umgebung' mit dem nächsten Systemupdate verändern könnte und so die Neuausrichtung von Koordinaten bzw. Nachbesserungen etc. notwendig machen würde.
Ziel sollte es sein den :arrow: Focus auf das gewünschte :arrow: Control zu setzen, und die Control-spezifische Übergabe anzustoßen (Click/Send/ :arrow: Check etc...).
WPLPHSS
Posts: 162
Joined: 04 Feb 2017, 05:34

Re: Handling Checkbox

29 May 2020, 07:58

Ich bin absoluter Laie und habe von tiefergreifenden Programmieraktionen überhaupt keine Ahnung.
BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Handling Checkbox

29 May 2020, 08:21

Falls dein Englisch ausreicht, kannst du dir dazu Tutorial-Videos z.B. von Joe Glines auf YT anschauen. Die Hilfe zu den oben verlinkten AHK-Befehlen gibt es auch auf Deutsch, dazu einfach im Online-Tutorial von en auf de wechseln!
Als erstes empfiehlt es sich, mal das Tool (ist ein Script) herunterzuladen und es anschließend zu starten.
https://www.autohotkey.com/boards/viewtopic.php?t=28220&p=146657

Danach einfach das von dir anvisierte (CheckBox)Control auf verfügbare Infos untersuchen.
AFAIK, wird dafür einfach das Fadenkreuz(icon) auf das gewünschte Control gezogen (drag&drop).
Angezeigte Infos werden dann als Angaben in den oben verlinkten AHK Control-Befehlen verwendet. Ist weniger kompliziert als es aussieht! ;)

Anschließend würde dein Script aus 3-5 Zeilen bestehen, mit Ablauf wie folgt:

1) Focus auf das gewünschte Control setzen ("zielen")
2) ggf vorab Status des Controls ermitteln. ("auslesen")
3) ggf Controlstatus ändern ("schreiben/setzen/anklicken")

:arrow: Automating Programs with Controls in AutoHotkey: 02 SimpleSpy Intro
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
WPLPHSS
Posts: 162
Joined: 04 Feb 2017, 05:34

Re: Handling Checkbox

30 May 2020, 04:28

ok. Vielen herzlichen Dank. Ich werde es ausprobieren.
just me
Posts: 9457
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Handling Checkbox

30 May 2020, 05:50

Moin,

Du musst versuchen, z.B. mit dem "Window Spy" (im Startmenü unter "AutoHotkey") das Fenster und die CheckBox eindeutig zu identifizieren. Mit einiger Wahrscheinlichkeit wird Dir für die Checkbox immer wieder dieselbe "ClassNN" angezeigt. Schau mal, ob Du das hinkriegst.
WPLPHSS
Posts: 162
Joined: 04 Feb 2017, 05:34

Re: Handling Checkbox

30 May 2020, 09:50

1. Checkbox (Vorblatt)

ClassNN: ThunderRT6CheckBox3
Text: Vor&blatt
x: 909 y: 242 w: 173 h: 23
Client: x: 900 y: 179 w: 173 h: 23

2. Checkbox (Übergabe)

ClassNN: ThunderRT6CheckBox4
Text: &Übergabe
x: 736 y: 242 w: 173 h: 23
Client: x: 727 y: 179 w: 173 h: 23

Die Checkboxen unterscheiden sich. Das müsste doch gut sein? Aber wie erkennt AHK, dass die Checkbox an- bzw. abgehakt ist? Bei Windows Spy sind die Einträge beim An- und Abhaken immer gleich.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Handling Checkbox

30 May 2020, 10:46

Nachdem klar ist, wie das Control 'eindeutig' addressiert werden kann, eben über die ClassNN + den Text im Fenster, kann damit nun der Status zum Control abgefragt werden, im Falle von CheckBoxen mittels des Befehls: ControlGet, Outputvar, Checked, ...
Zum Test dann die Outputvar(iable) einfach in einer MsgBox anzeigen lassen.

Code: Select all

!a::    ; press Alt+a
    ControlFocus, ThunderRT6CheckBox3,, Vor&blatt ; die fehlende 'WinTitle'-Angabe ggf noch nachtragen!
    ControlGet, OutputVar, Checked,, ThunderRT6CheckBox3,, Vor&blatt ; die fehlende 'WinTitle'-Angabe ggf noch nachtragen!
    MsgBox % "CheckBox-Status für Vorblatt ist: " OutputVar ; 0 = unchecked/1 = checked
    Return
Das Ab-/Anwählen der CheckBox geht dann mit dem Befehl Control und dem entsprechenden :arrow: SubCommand

8-)
WPLPHSS
Posts: 162
Joined: 04 Feb 2017, 05:34

Re: Handling Checkbox

31 May 2020, 02:53

Guten Morgen!

Das klappt super. Nächster Schritt: Ich möchte immer 0 = uncheckd voreingestellt haben. Wie füge ich das in das Skript ein?

2. Frage: Muss das Menü dabei immer geöffnet sein, oder klappt das auch im Hintergrund? (wäre noch besser)
just me
Posts: 9457
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Handling Checkbox

31 May 2020, 03:01

Moin,

in BoBo's Beispiel sehe ich weder eine Voreinstellung noch ein Menü. Wie sieht Dein Skript im Moment aus?
WPLPHSS
Posts: 162
Joined: 04 Feb 2017, 05:34

Re: Handling Checkbox

31 May 2020, 03:06

Code: Select all

#IfWinActive, ahk_exe GVWin.exe ;
#a::    ; press LWin + a
    ControlFocus, ThunderRT6CheckBox3,, Vor&blatt ; die fehlende 'WinTitle'-Angabe ggf noch nachtragen!
    ControlGet, OutputVar, Checked,, ThunderRT6CheckBox3,, Vor&blatt ; die fehlende 'WinTitle'-Angabe ggf noch nachtragen!
    Return	
#IfWinActive ;
Das wäre total auch für andere automatische Arbeitsabläufe im Programm super, wenn diese im Hintergrund abgearbeitet würden.
just me
Posts: 9457
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Handling Checkbox

31 May 2020, 05:00

Hallo,

wenn Du den Hotkey kontextabhängig machst, kannst Du meist auf weitere Angaben zum Fenster verzichten, weil das gefundene Fenster für die Hotkeyroutine als das Zuletzt Gefundene Fenster gesetzt wird. Wenn Du die Checkbox per Hotkey immer 'unchecken' willst, könnte deshalb das reichen:

Code: Select all

#IfWinActive, ahk_exe GVWin.exe ;
#a::    ; press LWin + a -> Checkbox Vorblatt abwählen - evtl. noch ControlFocus hinzufügen
    Control, Uncheck, , ThunderRT6CheckBox3
Return	
#IfWinActive
Das mit dem Menü verstehe ich immer noch nicht.
WPLPHSS
Posts: 162
Joined: 04 Feb 2017, 05:34

Re: Handling Checkbox

31 May 2020, 05:32

Das Skript klappt leider nicht. Es werden keine Veränderungen an der Checkbox "Vorblatt" vorgenommen.

Mit Menü meinte ich das anzeigte Windows-Bearbeitungsfenster.
just me
Posts: 9457
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Handling Checkbox

31 May 2020, 06:04

Ok, technisch gesehen sind Menüs und Fenster unterschiedliche Dinge. Hat denn BoBo's Skript eine plausible Ausgabe (0/1 -> uncheched/checked) gebracht?

Wenn Du kannst, stell doch mal ein Bildschirmfoto ein.
WPLPHSS
Posts: 162
Joined: 04 Feb 2017, 05:34

Re: Handling Checkbox

31 May 2020, 06:23

Bildschirmphoto.PNG
Bildschirmphoto.PNG (16.68 KiB) Viewed 2518 times
Gibt es deine Möglichkeit, verschiedene Checkboxen und andere Buttons (ClassNN: ThunderRT6OptionButton5) im Hintergrund von einem anderen Windowsfenster des Programms anzusteuern, ohne das oben angezeigte Fenster zu öffnen? Das Ergebnis soll ein Ausdruck sein. (ClassNN: Button1).

Weitere ClassNN-Werte
z. B. Checkbox Hinweis unter der Checkbox Vorblatt ClassNN: ThunderRT6CheckBox1
Checkbox Rückseiten: ClassNN: ThunderRT6CheckBox5

Ich möchte sehr gerne weitere Arbeitsabläufe auch mit anderen Programmmodulen im Hintergrund verwirklichen können. Zur Zeit wird das bei mir (nicht im Hintergrund) ganz simpel mit Mausklicks erledigt. Das klappt nicht immer und dauert teilweise (wegen den Sleep-Befehlen) zu lange.

In einem anderen Modul lautet die Checkbox:
ClassNN: ThunderRT6CheckBox11
Text: ver&s. Ratenabh.

Ich hoffe, dass klappen wird.
just me
Posts: 9457
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Handling Checkbox

31 May 2020, 08:25

Wenn das Fenster nicht geöffnet ist, kann es auch kaum aktiv sein. Die Anweisung #IfWinActive, ahk_exe GVWin.exe ; findet dann kein Fenster. Du kannst mal versuchen, das gegen #IfWinExist, ahk_exe GVWin.exe ; auszutauschen. Es mag aber sein, dass Du dann die Fensterkriterien verfeinern musst. Was sagt denn Win Spy zu den Fenstern (Titel, Klasse)?

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 55 guests