Text an Control senden
-
Hallo in AutoIT gibt es folgende Funktion:
https://autoit.de/onlinehilfe/functions/ControlSend.htmHat wer eine Ahnung welcher WIN API Befehl dahinter steckt?
-
Während Send wahrscheinlich direkt SendInput benutzt, benötigt ControlSend noch ein spezielles Window und Control, welches es sich wohl jeweils über FindWindow holt. Hierauf muß dann mittels SendFocus noch kurzzeitig der Fokus gesetzt werden.
Und dann wird der Tastendruck wohl per SendInput oder alternativ per SendMessage (WM_KEYDOWN / WM_KEYUP bzw. WM_CHAR) an das Control gesendet.Generell s.a. About Keyboard Input.
-
FindWindow, GetDlgCtrlId, GetDlgItem, WM_SETTEXT...
-
Hallo, mit einem anderen Tool konnte ich folgende Infos auslesen:
Die Funktion:
int WINAPI GetDlgCtrlID( _In_ HWND hwndCtl );
Benötigt ja ein handle auf das control.
Mit einem externen Tool konnte ich bereits folgendes auslesen:
>>>> Control <<<< Class: Edit Instance: 1 ClassnameNN: Edit1 Name: Advanced (Class): [CLASS:Edit; INSTANCE:1]
Jetzt stell sich mir halt die Frage wie ich an ein Handle von einem control komme.
An das handle von Edit komme ich folgendermaßen:
HWND h = GetWindow(FindWindow(0 , "Unbenannt - Editor") ,GW_CHILD ); cout<<"h: " << h << "\n"; char name[256]; GetClassName(h, &name[0], sizeof(name) ); cout<<"class name " <<&name[0]<<"\n";
Nur wie komme ich jetzt an Edit1
-
Indem Du entweder alle Child Windows enummerierst GetWindow/EnumChildWindows, oder die Id kennst (GetDlgItem)