CHAR bei Veränderung ändern



  • Hallo Leute,

    Ich wollte ein Log Programmieren wo gespeichert werden soll, welche Fenster offen waren, das alles spielt sich in einer Schleife ab.

    string log;
    HWND hwnd = GetForegroundWindow(); 
    TCHAR szWindowText[100];
    GetWindowText(hwnd, szWindowText, 100);
    while(true) {
    log+=szWindowText;
    }
    ofstream logfile;
    logfile.open ("log.txt");
    logfile << log;
    logile.close()
    

    Es muss doch irgendeine if-Abfrage geben das es sich im Log nur wenn sich der FensterTitel ändert, ändert.
    z.B.

    if(change(szWindowText))
    

    Sonst klappt es ja garnicht, wegen der endlosschleife.



  • Hübsch ist es vll nicht gerade - aber sollte verdeutlichen, wie es geht:

    std::string get_foreground_window_name()
    {
      HWND handle = GetForegroundWindow();
    
      char title[1024];
      int length = GetWindowTextA(handle, title, 1023);
      if(length == 0)
        throw std::runtime_error("failed"); //hier vll noch iwas mit GetLastError machen
    
      return std::string(title, title+length);
    }
    
    int main()
    {
      std::ostream log_file("filename.txt");
    
      std::string last_name;
      while(true)
      {
        std::string this_name = get_foreground_window_name();
    
        if(this_name == last_name)
        {
          Sleep(100);
          continue;
        }
    
        last_name.swap(this_name);
        log_file << last_name << std::endl;
      };
    }
    

    bb



  • unskilled schrieb:

    if(this_name != last_name)
        {
          Sleep(100);
          continue;
        }
    
    if(this_name == last_name)
        {
          Sleep(100);
          continue;
        }
    

    oder?



  • Japp, natürlich - ich änder es mal

    danke : >



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten