Grösse und Position ändern



  • Hi

    Wie ich Anwendungen per winexec oder createprocess starte, weiss ich. Wie verändere ich aber die Grösse und Position dieser Programme? So dass ein Internet Explorer an Position x,y mit der gewollter Länge und Breite dargestellt wird? Habe bei Google und MSDN nichts gefunden 😞

    danke für jede Hilfe!

    greez, -daZe-



  • Servus,

    da gibs die Möglichkeit mit Windowhandle zu arbeiten. Mit EnumWindowsProc und EnumWindows das Handle des Internet-Explorers suchen. Dann einen Pointer auf CWnd mit FromHandle und dann nur noch SetWindowsPos..

    so ungefähr:

    //Das als Funktion
    BOOL CALLBACK CDeinDlg::EnumWindowsProc(HWND hwnd, LPARAM lParam)
    {
    	TCHAR szBuffer[256];
    	memset(szBuffer,0,sizeof(szBuffer));
    
    	::GetWindowText(hwnd, szBuffer, sizeof(szBuffer));
    	CString strText = szBuffer;
    	if(strText == "Internet Explorer")
    	{
    		((CDeinDlg *)lParam)->m_handle = hwnd;	
    	}
    	return TRUE;
    }
    
    //Das ist der Aufruf
    ::EnumWindows(EnumWindowsProc, (LPARAM)this);
    //damit bekommste den auf nen CWnd Pointer
    CWnd * pFrissdieKatze = FromHandle(m_handle);
    pFrissdieKatze->SetWindowPos(blabla);
    

    in .h

    public:
    static BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
    

    Das Funktioniert aber nur solange bis der Internet Explorer einen anderen Titelleistentext erhält. Dann kann er das Handle nicht mehr finden. Dann suchst du am besten nach der Klasse. Klasse etc. von einem Window findest du am besten mit Spy++. Aber kannst ja mal gucken wie du das machst und mal ein bisschen ausprobieren...

    *winke*
    Hellsgore


Anmelden zum Antworten