Seite 1 von 1

Process suchen und "Klicken" / SetFocus

Verfasst: 12. Februar 2017 21:15
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.

Re: Process suchen und "Klicken" / SetFocus

Verfasst: 19. Februar 2017 13:23
von Christian81
Um alle Prozesse von Windows aufzulisten kann man z.B. EnumProcesses benutzen -> https://msdn.microsoft.com/de-de/librar ... s.85).aspx