SetFocus Problem



  • Hallo irgendwie funktioniert bei mir SetFocus nicht 😞

    Fehler Code: 126
    126 = The specified module could not be found.
    http://msdn.microsoft.com/en-us/library/ms681382(v=vs.85).aspx

    SetFocus()
    http://msdn.microsoft.com/en-us/library/ms646312(v=vs.85).aspx

    Was ist an meinem Code falsch ?

    #include <iostream>
    #include <windows>
    using namespace std;
    
    int main()
    {
    HWND set;
    DWORD curThread;
    HWND win;
    
    BOOL att;
    DWORD retThreadWin;
    LPDWORD id;
    
    HWND getf;
    Sleep(2000);
    
            win = FindWindow ( 0 , "getInput" );
    
            curThread = GetCurrentThreadId ();
            cout<<"cur: " << curThread <<endl;
    
            retThreadWin = GetWindowThreadProcessId ( win ,  id  );
            cout<<"retGet: " << retThreadWin << endl;
    
            att = AttachThreadInput( retThreadWin , curThread, true );
            cout<<"att: " << att <<endl;
    
            set = SetFocus( win );
            cout<<"set:" << set << " Error code: " << GetLastError() << endl;
    
                  /*/
                     code 126 = The specified module could not be found.
                  /*/
    
    system("PAUSE");
    }
    


  • Du verwendest offenbar mehrere threads in einem Programm. Dann brauchst du für SetFocus noch die Funktion AttachThreadInput. Steht so in der WinApi32 beschrieben.



  • Ich hab doch die AttachThreadInput Funktion in meinem Programm.



  • Wenn sich der Code kompilieren lässt, heißt es noch lange nicht, dass er fehlerfrei ist.
    LPDWORD id zeigt "irgendwo" hin, du musst aber einen gültigen Speicherbereich übergeben.
    AttachThreadInput muss immer zwei Mal aufgerufen werden, außerdem fehlt bei dir die Prüfung, ob das Fenster auch wirklich gefunden wurde.
    Wenn du also prüfst, ob das Fenster gefunden wurde, id als DWORD definierst, die Adresse mit dem &-Operator übergibst und AttachThreadInput korrekt nutzt, sollte das Programm funktionieren.



  • Jetzt funktioniert es ty. :xmas2: :xmas1: :>



  • Ok meine Version funktioniert auch ich hatte nur das falsche Programm "getInput.exe" gestartet. ^^


Anmelden zum Antworten