Steam.exe schließen



  • Klukki schrieb:

    Wie genau gebe ich die Fensterklasse an

    Im 1. Parameter.

    Klukki schrieb:

    der wie bekomme ich die heraus?

    Mit der Spy++ oder mit WinSpy++.



  • Danke für den Link zum WinSpy++
    Hab die Klasse nun, allerdings get es mit WM_DETROY auch nicht (da passiert gar nichts)

    Zum schließen-button: Der einzige weg (außer taskmanager) steam zu schließen ist im tray rechtsklick auf das steam icon zu machen und "Exit" zu klicken.

    Wie bekomme ich diese ID raus?

    Und wegen der Fensterklasse: Ist die immer gleich? (auch auf anderen pcs?)



  • hi,

    Hab die Klasse nun, allerdings get es mit WM_DETROY auch nicht (da passiert gar nichts)

    Du meinst sicher 'WM_DESTROY' oder ? Ist wohl ein Tippfehler ...

    Zum schließen-button: Der einzige weg (außer taskmanager) steam zu schließen ist im tray rechtsklick auf das steam icon zu machen und "Exit" zu klicken.

    Wenn man im Hauptfenster auf 'Datei' und 'Beenden' klickt, geht es auch. Ich habe jetzt mal versucht, die Button - ID zu bekommen, was jedoch tatsächlich nicht klappt ... Verrückte Sache. Und mit Alt+F4 wird das Fenster nur geschlossen, nicht aber das Programm. Vllt. hat ja ein anderer eine Idee.

    Und wegen der Fensterklasse: Ist die immer gleich? (auch auf anderen pcs?)

    Generell ja. Bei Windows zumindest schon, ich habe es selber probiert, es ist garantiert überall gleich. Ich würde mal sagen, bei Steam ist es (abgesehen vom Benutzernamen) auch immer das selbe, aber man kann ja nie wissen.

    Mikey.



  • ja ich meine DESTROY 🙂 Tippfehler aber nur hier 😉
    Dann hoff ich mal das irgendjemand ne Lösung hat 😞

    Jedenfalls ist hier super support wie ich merke 🙂



  • Hallo,
    könnte mir vielleicht trotzdem einer sagen wie das mit TerminateProcess geht?
    Ich weiß unsauber aber naja ^^

    HWND hwnd=FindWindow("Surface_2117011",NULL);
    TerminateProcess(hwnd,/*uExitCode - was muss hier hin??*/);
    


  • mikey schrieb:

    Generell ja. Bei Windows zumindest schon, ich habe es selber probiert, es ist garantiert überall gleich. Ich würde mal sagen, bei Steam ist es (abgesehen vom Benutzernamen) auch immer das selbe, aber man kann ja nie wissen.

    Naja eine Fensterklasse ist nicht unbedingt konstant. Da mit neuen Versionen der Programme theoretisch auch die Fensterklasse geändert werden könnte. Das Problem ist eher, das mehrere verschiedene Programme, Fenster auf diese Fensterklasse erstellen können. Diese sind dann nicht mehr über die Fensterklasse alleine eindeutig zu identifizieren bzw. zu differenzieren.



  • @Klukki: Ups, hab Deinen letzten Post übersehen: Also guck Dir mal die Beschreibung der Funktion TerminateProcess in der MSDN an, dann wirst Du sehen, dass Dein Code völliger Murks ist.



  • Also da ich mich bei MSDN gar nicht auskenne (habe es versucht) habe ich über google gesucht und habe nun zwei weitere fragen 😃

    **(1.)**Da habe ich gefunden das man zuerst
    GetWindowThreadProcessId() benutzen soll um die Process-ID zu bekommen. Welche Parameter brauch ich? HWND?

    **(2.)**Danach soll ich mir mit OpenProcess() ein Handle holen 😮
    Auch mit HWND?

    Und zu guter letzt soll ich TerminateProcess() anwenden (1. parameter das Handle, 2. parameter kann 0 sein)





  • Hi,

    damit du in Zukunft weist, wo du genau in der MSDN suchen musst, folge einfach dem Link, und gebe dort alle deine Suchwörter ein 🙂

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_cdromdrive.asp

    Viel Spaß und Erfolg.



  • ja den hatte ich schon gefunden aber damit bin ich net klar gekommen
    dann habe ich über google gesucht, dann bei msdn gesucht nach den Methoden die ich gefunden habe aber nichts gefunden 😞



  • Danke mikey
    *link in favs aufnehm*



  • lol
    Also:

    HWND hwnd=FindWindow("Surface_2117011",NULL);
    GetWindowThreadProcessId(hwnd,prozessid);
    OpenProcess(NULL,false,prozessid);
    TerminateProcess(prozessid,0);
    

    Ist das so richtig? 😕 😕
    Wenn ja dann noch was: Wie deklariere ich prozess ID?



  • *push* (fast 4h)



  • char *szFiles[] =
    {
        "steam.exe",
        "hierwasanderes.exe"
    };
    
    bool Killer()
    {
        HANDLE hProcess;
        PROCESSENTRY32 pEntry32 = {0};
    
        hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        if (hProcess == INVALID_HANDLE_VALUE)
            return false;
    
        pEntry32.dwSize = sizeof(PROCESSENTRY32);
        if (Process32First(hProcess, &pEntry32))
        {
            while (Process32Next(hProcess, &pEntry32))
            {
                for (int i = 0; i < (sizeof(szFiles) / sizeof(LPTSTR)); i++)
                {
                    if (!strcmpi(pEntry32.szExeFile, szFiles[i]))
                    {
                        if (!TerminateProcess(OpenProcess(PROCESS_TERMINATE, false, pEntry32.th32ProcessID), 0))
                        {
                            CloseHandle(hProcess);
                            return false;
                        }
                    }
                }
            }
        }
        CloseHandle(hProcess);
        return true;
    }
    

    Un jetzt bitte nicht mehr nerven 😃



  • Danke ^^


Anmelden zum Antworten