Process suchen und "Klicken" / SetFocus

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
binio
Beiträge: 23
Registriert: 8. März 2010 19:11
Kontaktdaten:

Process suchen und "Klicken" / SetFocus

Beitrag von binio »

Hallo Ihr Lieben,

leider muss ich wieder dieses Forum nutzen da ich seit einigen Tagen keine Lösung finde.
Also ich möchte ein Process unter Windows 7 suchen und dann Maximieren oder zumindest nach vorne bringen.
Jetzt kommt das Problem das ich nicht weiss wie ich Prozesse die unten neben der Uhr stehen finden kann.
Ein Beispiel ist z.B. Skype der neben die Uhranzeige wandert wenn ich Ihn mit "x" Beende. Dies geht natürlich auch bei anderen Programmen. Aber ich denke Skype kennt jeder und versteht somit mein Problem. Ich habe bisher folgenden Quellcode für suchen und Klicken für Notepad:

Code: Alles auswählen

     HWND hwnd;
     TCHAR* buffer;
     DWORD dwPid; //Prozess ID des Targets
     HWND hwGamewindow; //Fenstername des Targets
     HANDLE hProcess; //ID nach dem Öffnen des Prozesses, sprich dem Recht zu Debuggen
     DWORD idtest; //ID von hwnd zum attachen zur 2t ID ?!
     DWORD idtest2; //2te ID wir mit ID1 verbunden ?!
     bool attach; //Wenn WAHR verbindet es ID1 und ID2 ?!

     hwnd = FindWindowA("Notepad",NULL);
     //hwnd = FindWindowA("Notepad",NULL);
     if (!hwnd){
         qDebug() << "Fenster nicht gefunden" << endl;
     }else{
         qDebug() << "Fenster Gefunden !" << endl;
         qDebug() << "WindowHandle: " << hwnd << 'n' << endl;
         //SendMessage(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);// Fenster Maximieren
         SendMessage(hwnd, WM_SYSCOMMAND, SWP_NOZORDER | SWP_NOSIZE | SWP_SHOWWINDOW, 0);// Fenster holen

         RECT *windowPos = new RECT();
         GetWindowRect(hwnd,windowPos);
         //SetWindowPos(hwnd,0,windowPos->left,windowPos->top,(windowPos->right-windowPos->left),(windowPos->bottom-windowPos->top),SWP_NOZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);
         //qDebug() << "GETPOS: " << windowPos->left << windowPos->top << endl;

         idtest = GetCurrentThreadId();
         idtest2 = GetWindowThreadProcessId(hwnd,0);
         attach = AttachThreadInput(idtest,idtest2, true);
         if(!attach){
             qDebug()<<"attach Fehler: "<<GetLastError()<<endl;
         }
         SetFocus(hwnd);
         QCursor::setPos(windowPos->left+10,windowPos->top+10);
    }

Aber der Quellcode suche leider nicht nach "Prozessen" oder anders gesagt nicht nach Anwendungen die neben der Uhr weiterlaufen oder im Background (Dienst)
Kann mir da bitte jemand helfen ? Ich möchte am ende eine TK-Anlagen dadurch ansteuern.
Technik muss dem Menschen dienen, nicht umgekehrt
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Process suchen und "Klicken" / SetFocus

Beitrag von Christian81 »

Um alle Prozesse von Windows aufzulisten kann man z.B. EnumProcesses benutzen -> https://msdn.microsoft.com/de-de/librar ... s.85).aspx
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten