CloseWindow geht nicht



  • Hi @ All

    Das CloseWindow bei anderen fokusierten fenstern funzt net.

    HWND hWnd = GetFocus();
    
    	CloseWindow(hWnd);
    

    Da habe ich mir mal eine Funktion überlegt:

    bool CInput::ShortCut(BYTE bVirtualFirst, BYTE bVirtualSecond, BYTE bVirtualKeyCode)
    {
    	if (bVirtualKeyCode == NULL)
    	{
    		return false;
    	}
    
        INPUT ipSignal;
        ipSignal.type           = INPUT_KEYBOARD;
        ipSignal.ki.wScan       = 0;
        ipSignal.ki.dwFlags     = 0L;
        ipSignal.ki.time        = 0L;
        ipSignal.ki.dwExtraInfo = 0L;
    
    	// Press first
    	if (bVirtualFirst != NULL)
    	{
    		ipSignal.ki.wVk = bVirtualFirst;
    		SendInput(1, &ipSignal, sizeof(ipSignal));
    	}
    
    	// Press second
    	if (bVirtualSecond != NULL)
    	{
    		ipSignal.ki.wVk = bVirtualSecond;
    		SendInput(1, &ipSignal, sizeof(ipSignal));
    	}
    
    	// Press key
        ipSignal.ki.wVk = bVirtualKeyCode;
    	SendInput(1, &ipSignal, sizeof(ipSignal));
    
    	// And release it
    	ipSignal.ki.dwFlags     = KEYEVENTF_KEYUP;
        SendInput(1, &ipSignal, sizeof(ipSignal));
    
    	// Release second
    	if (bVirtualSecond != NULL)
    	{
    		ipSignal.ki.wVk = bVirtualSecond;
    		SendInput(1, &ipSignal, sizeof(ipSignal));
    	}
    
    	// Release first
    	if (bVirtualFirst != NULL)
    	{
    		ipSignal.ki.wVk = bVirtualFirst;
    		SendInput(1, &ipSignal, sizeof(ipSignal));
    	}
    }
    

    Wenn an dann ein CInput hat, dann so:

    Input.ShortCut(VK_MENU,NULL,VK_F4);
    

    Dann beendet er.

    Ich werde das noch static machen.

    aber ist es überhaupt vorgesehen, andere Fenster zu schließen, oder ist das von mir nur so n hack??

    thx.



  • msdn schrieb:

    The CloseWindow function minimizes (but does not destroy) the specified window.

    Ich weiß ja nich was du unter schliesen verstehst aber die Funktion ist zum minimieren gedacht.

    und zum Schliesen benutz doch einfach SendMessage



  • Oh danke.

    Aber das SendMessage(hWnd,WM_CLOSE,NULL,NULL);

    geht nicht.



  • Dann ist das Handle nicht das richtige oder das Programm welches du schließen möchtest möchte so nicht geschlossen werden 😉



  • Achso, naja dann ist der AltF4-Hack genau das was ich brauche^^.

    thx.





  • Der Link von geeky trifft die Sache am Besten! Oder alternativ DestroyWindow. Dein 'Hack' ist da IMHO nicht ratsam.


Anmelden zum Antworten