Handle eines Buttons Bekommen und dann auslösen



  • Hallo,

    also wie der Titel schon sagt, versuche ich an den Handle eines Buttons zu kommenund ihn dann auszulösen.
    Bisher sieht das ganze so aus:

    HWND hWnd;
      hWnd=FindWindow(NULL,"Eigenschaften von Anzeige");
      HWND button = FindWindowEx(hWnd, NULL, NULL, "OK");
    

    Ist das soweit richtig? Wenn ja, wie gehts jetzt weiter?
    vielen dank schonmal



  • Nop, FindWindow, wird da nicht fündig... 😃

    Versuchs mal mit:

    - EnumChildProc
    - EnumChildWindows

    Wenn du dann ein Handle auf den Button hast, holst du dir mit GetWindowLongPtr die ID und sendest dann ne WM_COMMAND, ..

    NIcht getestet aber sollte funzen, vllt. hilft dir auch die Funktion: FindWindowEx



  • Naja, so wie es da oben steht klappt das schonmit dem Handel, habs getestet, indem ich den Button umbenannt hab.

    HWND hWnd;
      hWnd=FindWindow(NULL,"Eigenschaften von Anzeige");
      char text[] = "test";
      SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)text);
      HWND button = FindWindowEx(hWnd, NULL, NULL, "OK");
      SendMessage(button, WM_SETTEXT, 0, (LPARAM)text);
    

    muss jetzt nur noch das mit der id austesten



  • Irgendwie bekomm ich das nicht so ganz hin. wie bekommich denn die id von einem Button?



  • Alles zurück. habs jetzt!

    HWND hWnd;
      hWnd=FindWindow(NULL,"Eigenschaften von Anzeige");
      SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)text);
      SendMessage(hWnd, WM_COMMAND, IDOK, NULL);
    

    danke Jungs



  • LOL?!, und woher nimmst du das IDOK ?



  • IDOK ist der Standard-ID von OK-Buttons in Dialogfeldern.

    Mich würde vielmehr interessieren, was er macht, wenn sein Programm auf anderen Windows-Sprachversionen laufen soll... 😉

    Greetz, Swordfish



  • Naja vllt doch noch als Nachtrag, ich meinte das in etwa so:

    ⚠ Ungetesteter Code ⚠

    HWND hWndParent = FindWindow(TEXT("#32770"), TEXT("Eigenschaften von Anzeige"));
        HWND hbtnOk = FindWindowEx(hWndParent, NULL, TEXT("Button"), TEXT("OK"));
        SendMessage(hWndParent,
                    WM_COMMAND,
                    MAKEWPARAM(static_cast<WORD>(GetWindowLongPtr(hbtnOk, GWL_ID)), 1),
                    reinterpret_cast<LPARAM>(hbtnOk));
    

    ⚠ Ungetesteter Code ⚠

    PS: Das bekommst du auch über die Spy++ heraus!



  • Swordfish schrieb:

    IDOK ist der Standard-ID von OK-Buttons in Dialogfeldern.

    Jop, schon klar, aber da würd ich mich lieber nit druff verlassen *oHo* ^^

    Swordfish schrieb:

    Mich würde vielmehr interessieren, was er macht, wenn sein Programm auf anderen Windows-Sprachversionen laufen soll... 😉
    Greetz, Swordfish

    Eben 😉 , Greetz Back 👍



  • CodeFinder schrieb:

    Swordfish schrieb:

    Mich würde vielmehr interessieren, was er macht, wenn sein Programm auf anderen Windows-Sprachversionen laufen soll... 😉
    Greetz, Swordfish

    Eben 😉 , Greetz Back 👍

    Ja, da ist die ID dann ganz klar IDINORDNUNG.



  • WebFritzi, du Witzkeks! Ich meinte eher, dass er auf einem Windows System mit anderer LangID als Deutsch wenig Erfolg haben wird wenn er versucht ein Fenster mit dem Titel "Eigenschaften von Anzeige" zu finden:

    Stonecold383 schrieb:

    HWND hWnd;
    hWnd = FindWindow( NULL, "Eigenschaften von Anzeige" );
    SendMessage( hWnd, WM_SETTEXT, 0, (LPARAM)text );
    SendMessage( hWnd, WM_COMMAND, IDOK, NULL );
    

    Greetz, Swordfish


Anmelden zum Antworten