Minimieren eines Fensters(extern) verhindern?



  • Hi, gibt es eine Möglichkeit das Minimieren von einem Externen Fenster zu verhindern. D.h. dass es immer im Vordergrund bleibt?

    Würde mich über ein paar Antworten freuen.

    Gruß kf



  • So hab nun mal versucht, per SetWindowLong mal die Nachrichten des WndProc abzufangen.

    problem: Access Denied beim setzen von SetWindowLong (Jemand ne Ahnung? 😕 )

    WNDPROC OldProc;
    LRESULT NewProc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
    
    int main(){
    
    	HWND hWnd = FindWindow(NULL,"External Window");
    
    	if( hWnd )
    	{
    		printf("\nWindow found, try to inject Window");
    
    		if( (OldProc=(WNDPROC) SetWindowLong( hWnd, GWL_WNDPROC, (LONG)NewProc )))
    		{
    
    		}
    		else
    		{
    			char buffer[512];
    			sprintf( buffer, "\nERROR: %d", ::GetLastError() );
    			printf( buffer );
    
    		}
    
    		while( true ){
    			Sleep(1000);
    		}
    
    	}
    	else
    	{
    		printf("\nERROR: window not found");
    	}
    	printf("\nFinished");
    	getchar();
    	return 1;
    }
    
    LRESULT NewProc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam )
    {
    
    	//return CallWindowProc( OldProc, hWnd, Msg, wParam, lParam );
    	//lpPrevWndFunc
    	printf("\nTest");
    	return CallWindowProc( OldProc, hWnd, Msg, wParam, lParam );
    }
    

    ERROR: #5 für GetLastError() - Access Denied



  • Versuchs doch mal mitm Hook:

    SetWindowsHookEx http://msdn2.microsoft.com/en-us/library/ms644990.aspx

    CBTProc http://msdn2.microsoft.com/en-us/library/ms644990.aspx

    The CBTProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function. The system calls this function before activating, creating, destroying, minimizing, maximizing, moving, or sizing a window;



  • du kannst ein fenster, das nicht zu deinem thread gehört, subclassen.



  • Hm, okay und wie kann ich das evt. andersweitig bewerkstelligen?



  • dann schau mal einen Beitrag unter dir 😉

    --> einen hook setzen 😉
    ggf. vorher mit DLL erstellung auseinander setzen, bei google findest du aber gute beispiele, die den umgang mit DLLs und dem exportieren von funktionen erklären



  • Ah okay, Hooks funktionieren, danke für die Info 👍 Werd das mal ausprobieren.


Anmelden zum Antworten