Fenstertitel vergleichen



  • Hallo,

    ich möchte innerhalb eines Programms die titel zweier fenster vergleichen.
    Dazu lege ich zwei char arrays an. Hole mir per GetForegroundWindow() das Handle des aktiven Fensters und ermittele mit GetWindowText() den Titel. In einem zweiten durchlauf wird dann der letzte Fenstertitel in das zweite array geschrieben und erneut der aktuelle fenstertitel geholt. Nun sollen die beiden Fenstertitel verglichen werden; und genau hier liegt mein Problem. Ich habe es schon mit strncmp, strcmp und memcmp versucht. evtl liegt es aber auch daran, dass ich den Inhalt des ersten mit Hilfe von memcpy in das zweite Array kopiere ?
    Hier ist dann mal mein code:

    char caption[255] = "";
      char oldCaption[255] = "";
      memcpy(oldCaption, caption, sizeof(caption));
      hCur = GetForegroundWindow();
      GetWindowText(hCur, caption, 255);
      if ( strncmp(oldCaption, caption, 255) {
         fprintf(datei, "\n[%s]\n", caption);
      }
    

    Bitte nicht meckern, fals ich was falsch gemacht habe, ist mein erster Post 😃
    Und danke schonmal im Vorraus



  • ich hab noch vergessen zu sagen, dass der Code nur zusammenkopiert ist. Die beiden Arrays werden natürlich nicht jedesmal neu angelegt 😉


  • Mod

    Ich sehe aber nur die Cpation von einem Fenster.

    TCHAR szCaption1[255], szCaption2[255];
    GetWindowText(hwnd1,szCpation1,sizeof(szCaption1)/sizeof(szCaption1[0]));
    GetWindowText(hwnd2,szCpation2,sizeof(szCaption2)/sizeof(szCaption2[0]));
    if (_tcscmp(szCaption1,szCaption2)!=0)
    {
    // cpation differ
    }
    


  • das ganze wird innerhalb der Nachrichtenfunktion aufgerufen. Bei jedem Aufruf soll das aktuell aktive fenster ermittelt werden und mit dem zuletzt aktiven verglichen werden. sollten sie nicht übereinstimmen wird der Name des Fensters in eine Datei geschrieben. Das ganze Funktioniert auch soweit, nur dass das Programm immer denkt, dass es eine Neue Anwendung wäre.


  • Mod

    Und warum merkst Du Dir nicht einfach das Fensterhandle? Wenn es sich ändert kannst Du den Titel laden und wegschreiben...


Anmelden zum Antworten