Page 1 of 1

WinSpy etc.

Posted: 15 Feb 2018, 09:28
by Folllast
Hallo,

hat noch jemand Versionen von "meinfensterguck" oder ähnlich , mit dem ich eine Button-ID auslesen kann. Windowspy liefert keine geeigneten Ergebnisse, egal welchen Button ich überfahre, es steht "HwndWrapper" im bereicht "Control under mouse position".

Vielen Dank.

Re: WinSpy etc.

Posted: 15 Feb 2018, 10:29
by BoBo
Andere tools machen in der regel nur sinn um zusätzliche/andere infos abzufragen (zB bei namensgleichheiten, um weitere unterscheidungsmerkmale zu erhalten).
Wenn Winspy das so ausspuckt ändert ein anderes tool daran erstmal nichts. ACC Viewer und ControlSpy wären mögliche alternativen.

Re: WinSpy etc.

Posted: 16 Feb 2018, 02:54
by Folllast
also ich hab jetzt mit ACC Viewer die ID herausgefunden und Festgestellt, dass sie sich bei jedem Fenster anders ist. Ich muss also irgendwie aus der Bezeichnung die ID Herausfinden (1) und dann den Klick-Befehl auslösen (2)

folgenden Script habe ich jetzzt, den ich im Fenster mit einer Tastenkombination starte. Dieser funktioniert aber nicht... weder die Button-ID wird in der variable gespeichert noch wird der klick-befehl gesendet, wenn ich die ID manuell eintrage

Code: Select all

!1::
ControlGet, hwnd, Hwnd,,Drucken..., Ansicht - Warenausgang - WA18-000100
ControlClick ,,ahk_id %hwnd%,
Die Schaltfläche heisst "Drucken..." und das Fenster heisst "Ansicht - Warenausgang - WA18-000100", allerdings ist dieses Feld leer, wenn ich diese Schaltfläche markiere.

Re: WinSpy etc.

Posted: 16 Feb 2018, 03:44
by BoBo

Code: Select all

!1::
   ControlGet, hwnd, Hwnd,,Drucken..., Ansicht - Warenausgang - WA18-000100
   MsgBox % hwnd
   ControlClick ,,ahk_id %hwnd%
   Return
Verstehe ich das richtig - du ermittelst a) die fenster-ID bereits erfolgreich via ControlGet, doch b) der Click funzt nicht??
BTW, benutzt du SetTitleMatchMode um eventuele varianzen beim fenstertitel zu handeln?

Re: WinSpy etc.

Posted: 16 Feb 2018, 04:27
by Folllast

Code: Select all

!1::
   ControlGet, hwnd, Hwnd,,Drucken..., Ansicht - Warenausgang - WA18-000100
   MsgBox % hwnd
   ControlClick ,,ahk_id %hwnd%
   Return
Verstehe ich das richtig - du ermittelst a) die fenster-ID bereits erfolgreich via ControlGet, doch b) der Click funzt nicht??
BTW, benutzt du SetTitleMatchMode um eventuele varianzen beim fenstertitel zu handeln?

ERSTMAL bleibt der TitleMatchMode so, da das Fenster immer so heist. wird ggf. Später nochmal geändert, aber da muss erst herausfinden wieviel Varianz ich zulassen kann, um trotzdem sicher nur dieses Fenster anzusprechen.

nichts von beidem Funktioniert. Ich ahb zwei Tests gemacht:
1.den Script geöffnet, die Tastenkombination gedückt, in die Variablen vom Script geschaut: die Variable "hwnd" war leer.

2.mit ACC die hwnd ausgelesen, manuell zugewiesen und dann den Script (natürlich ohne ControlGet) gestartet, und er klickt trotzdem nicht auf den Button.

Problem könnte sein, dass der Button irgendwie nicht dem Fenster zugeordnet ist. Hier ein Screenshot vom ACC mit markierten Button.
drucken.JPG
drucken.JPG (40.63 KiB) Viewed 559 times

Re: WinSpy etc.

Posted: 16 Feb 2018, 07:18
by BoBo
[Brainfart] Arbeitet der AHK befehl denn mit nem hex hwnd? [/Brainfart]

Re: WinSpy etc.

Posted: 16 Feb 2018, 07:31
by Folllast
[Brainfart] Arbeitet der AHK befehl denn mit nem hex hwnd? [/Brainfart]

Um ein Steuerelement via HWND (Windows Handle) anzusteuern, lässt man diesen Parameter leer und übergibt ahk_id %SteuerelementHwnd% als Fenstertitel-Parameter (funktioniert auch bei versteckten Steuerelementen, selbst wenn DetectHiddenWindows ausgeschaltet ist). Das HWND eines Steuerelements wird üblicherweise per ControlGet Hwnd, MouseGetPos oder DllCall abgerufen.

ist leider nicht wirklich beschrieben welcher es sein soll. was muss es denn sein? Dual? Dezimal? Octal? :D

Re: WinSpy etc.

Posted: 16 Feb 2018, 07:41
by BoBo
[Brainfart] Arbeitet der AHK befehl denn mit nem hex hwnd? [/Brainfart]

Um ein Steuerelement via HWND (Windows Handle) anzusteuern, lässt man diesen Parameter leer und übergibt ahk_id %SteuerelementHwnd% als Fenstertitel-Parameter (funktioniert auch bei versteckten Steuerelementen, selbst wenn DetectHiddenWindows ausgeschaltet ist). Das HWND eines Steuerelements wird üblicherweise per ControlGet Hwnd, MouseGetPos oder DllCall abgerufen.

ist leider nicht wirklich beschrieben welcher es sein soll. was muss es denn sein? Dual? Dezimal? Octal? :D
Nun, nach etwas recherche scheint hex kein problem für AHK windows befehle zu sein (?)

Re: WinSpy etc.

Posted: 26 Feb 2018, 06:56
by Folllast
Ich weiß leider nicht wie ich es lösen soll.

Re: WinSpy etc.

Posted: 26 Feb 2018, 07:18
by BoBo
Wenn du hier nur alle 14 tage aufschlägst ist man/frau aus dem thema rgendwie raus, und sich jedes mal neu einzulesen ist meh ... :yawn:

Der Button ist markierbar (das nehm ich mal als "abfragbar"). Erstes ziel dürfte sein, den focus auf den button zu bekommen. Worst case (aus meiner erfahrung), das fenster starten, abwarten bis fertig geladen. Anschließend von dem (den focus besitzenden) Anfangscontrol mittels multiblen tabs auf den gesuchten button navigieren und (nach evtl gegencheck) ControlClick. Sieht zwar blöd aus (und bedingt ein offenes programmfenster) doch seis drum.

Re: WinSpy etc.

Posted: 26 Feb 2018, 07:45
by Folllast
Vielen Dank für die Hilfe. So eine Brücke habe ich mir auch gebaut. Aber das ist ja nur ein Pflaster auf eine offene Wunde, ich möchte verstehen, warum AHK die Button-ID nicht auslesen kann bzw. den nicht ansteuern kann bzw. wo genau der Fehler bei der Ursprünglichen Methode mit dem HWND ist.

Re: WinSpy etc.

Posted: 26 Feb 2018, 09:13
by BoBo
ich möchte verstehen, warum AHK die Button-ID nicht auslesen kann
Weil (d)eine application nicht nah genug zum windows/microsoft standard aufgebaut ist? Gibt genug davon Delphi/PowerBuilder/Java/... . Du bekommst hier den (standard)löffel zur glasnudelsuppe.
Suppe geht noch gut, glasnudeln nicht. Hätte dein programm mal besser auf buchstabennudeln gesetzt! Da kann aber der löffel nix dafür :lolno:

Re: WinSpy etc.

Posted: 26 Feb 2018, 10:32
by divanebaba
... und er klickt trotzdem nicht auf den Button. ...
Ich habe gute Erfahrungen, mit Drücken von Knöpfen, mit folgendem Befehl gemacht. Ich nutze allerdings die ClassNN, statt die ahk_id.
Vielleicht funktioniert es auch mit der ahk_id.

Code: Select all

Control, Check,,, ahk_id 0x21082C
gähn ...

Re: WinSpy etc.

Posted: 26 Feb 2018, 11:26
by BoBo
Hat der bube eigentlich den SetTitleMatchMode versuchsweise mal auf 2 gesetzt? Nur mal so der form halber gefragt?
Obwohl der ACCV zeigt ja eh keinen fenstertitel an ..!?

Re: WinSpy etc.

Posted: 27 Feb 2018, 07:44
by Folllast
ja, der MatchCode wurde gleich zu begin auf 2 gesetzt.

Re: WinSpy etc.

Posted: 28 Feb 2018, 08:08
by Folllast
Hallo,

wie kann ich verhindern, dass bei "FileAppend" umlaute in Kauderwelsch verwandelt werden?
und vielleicht sogar, dass sie bei "FileRead" korrekt eingelesen werden.

Re: WinSpy etc.

Posted: 28 Feb 2018, 08:12
by divanebaba
Codierung anfügen, like below

Code: Select all

Fileappend, %KleinkinderDiskriminierung%, C:\Lehrerempfehlung.txt, UTF-8

Re: WinSpy etc.

Posted: 28 Feb 2018, 09:07
by gregster
Oder Codierung gleich global setzen via https://autohotkey.com/docs/commands/FileEncoding.htm