Wie ein anderes Fenster schließen?



  • Hallo,

    hänge in folgendem Problem gerade:
    Ich habe einen Prozess, den ich nicht stoppen kann (und auch nicht will).
    Dieser shttp://c-plusplus.net/forum/posting-var-mode-is-newtopic-and-f-is-1.htmltartet einen anderen Prozess (dot.exe), welche gelegenlich eine exception wirft.
    Dann öffnet sich das "Wollen sie debuggen" Fenster von VS, weil dies hier lokal installiert ist. Das hat dann zur Folge, das der Prozess zum stillstand solange kommt.
    Die Berechnung wird noch länger laufen, so muss ich also das Fenster schließen, da das Programm danach normal weiterläuft.

    Meine Überlegung ist nun ein Programm zu schreiben, welches nach diesem Exception Window sucht, und es entsprechend schließt, somit kann der Prozess die Nacht auch bei Exceptions durchlaufen.
    Mit Enumwindows kann ich das Fenster bereits finden, und auch entsprechend das Handle HWND bekommen.

    Daher bleibt nur die Frage, wie schließe ich dieses Fenster nun?

    Alternativ würde mich auch interessieren, ob ich das irgendwie verhindern kann, dass es sich öffnet, habe aber leider keine Adminrechte hier, daher auch dieser Ansatz eines Hacks.



  • also erstmal dein Link den du da gepostet hast geht nicht und wenn man das erste S weglässt kann man ein neues Thema schreiben, also sicher net das was du wolltest.

    Des weiteren solltest du besser suchen warum der die exception wirft und den fehler beseitigen, anstatt zu suchen wie du die Meldung weg bekommst.



  • CTecS schrieb:

    also erstmal dein Link den du da gepostet hast geht nicht und wenn man das erste S weglässt kann man ein neues Thema schreiben, also sicher net das was du wolltest.

    Des weiteren solltest du besser suchen warum der die exception wirft und den fehler beseitigen, anstatt zu suchen wie du die Meldung weg bekommst.

    Keine Ahnung wie der Link da reingekommen ist, korrigieren kann ich es nicht mehr 🤡
    Zuspät gesehen.

    Habe das jetzt gelöst:

    BOOL CALLBACK MyEnumProc(HWND hWnd, LPARAM lParam)
    {
        TCHAR title[500];
        ZeroMemory(title, sizeof(title));
    
        //string strTitle;
    
        GetWindowText(hWnd, title, sizeof(title)/sizeof(title[0]));
    
    	std::wcout << title << std::endl;
    
        if(_tcsstr(title, _T("Just-In-Time")))
        {
    		DWORD pid;
    		GetWindowThreadProcessId(hWnd, &pid);
    		HANDLE hProcess;
    		hProcess = ::OpenProcess(PROCESS_TERMINATE,FALSE,pid);
    		TerminateProcess(hProcess,0);
            return FALSE;
        }
        return TRUE;
    }
    

    Ist klar das das dirty ist. Aber ich habe eben keine Einflussmöglichkeit auf den Prozess der die Exception wirft.

    Muss das jetzt nur noch in eine Endlosschleife tun, und entsprechend einen sleep einfügen. reicht da _sleep?


Anmelden zum Antworten