Ein Programm/Fenster in den Vordergrund holen (und sonstige Einwirkungen)
-
Hi Community,
ist es möglich aus meiner Anwendung heraus ein anderes Programm/Fenster
in den Vordergrund zu holen oder sogar zu minimieren, maximieren und
die Fenstergrößen zu beeinflussen?Beispiel, ich habe die laufenen Programme ausgelesen und möchte das
Fenster vom Firefox in den Vordergrund holen und die Größe
des Firefox Fensters auf 800 x 600 stellen.Liebe Grüße!
-
Hallo
Ein Fenster kannst du wie folg in den Vordergrund holen:
BOOL SetForegroundWindow(HWND hWnd);
Und mit
BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags );
Kannst du die Position ändern, die Grösse Anpassen.
// Auch mit SetWindowPos kannst du ein Fenster in den Vordergrund holen:
Beispiel
HWND handle; handle = FindWindow(NULL,"Firefox"); SetWindowPos(handle,HWND_TOP,0,0,800,600,SWP_SHOWWINDOW | SWP_NOMOVE);
So wird Firefox die Grösse 800*600 gegeben. Zudem wird er angezeigt und an oberster Front der Fenster gestellt.
Möge es dir Weiterhelfen.
-
Hi Deforation,
danke für deine Antwort.
Ich muss gestehen ich bin überrascht. Hätte ich eigentlich nicht für
möglich gehalten das ich sogar andere Fenster beeinflussen kann.Kann ich den mein eigenes Programm gegen solche "Einwirkungen von Außen"
schützen und dafür sorgen das meine Anwendung sich nicht beeinflussen lässt?Desweiteren noch eine Verständnis Frage.
Das HWND steht für Handle oder? Was genau ist den dieses Handle eines
Fensters? Benutzt man das zur Identifikation?Gruß!
-
Not The One schrieb:
Ich muss gestehen ich bin überrascht. Hätte ich eigentlich nicht für
möglich gehalten das ich sogar andere Fenster beeinflussen kann.Kann ich den mein eigenes Programm gegen solche "Einwirkungen von Außen"
schützen und dafür sorgen das meine Anwendung sich nicht beeinflussen lässt?Nicht ohne weiteres. Programme, die diese Möglichkeit ohne den Willen des Nutzers anwenden, machen sich aber schnell unbeliebt, daher sei Vorsicht angeraten.
Zu dieser Problematik ist übrigens Raymond Chens "The arms race between programs and users" ganz interessant.Not The One schrieb:
Das HWND steht für Handle oder? Was genau ist den dieses Handle eines
Fensters? Benutzt man das zur Identifikation?So ist es.
-
Hi audacia,
vielen Dank für deine Antwort und den sehr interessanten Link.
Kann mich dem eigentlich nur anschließen, es ist oft nicht leicht
zu entscheiden was der Benutzer will wenn die eigene Anwendung
einer breiten Masse zur Verfügung gestellt werden soll, dabei
die Wünsche des Progmmieres, der Benutzer und die der Platform*
erfüllen soll.*Damit meine ich die diversen Sicherheits Aspekte die man auf jedem
System beachten sollte. Passwörter speichern als Beispiel.Gruß!
-
Sry, bin Anfänger in Api. Bei mir kommt jetzt folgende Fehlermeldung: Fehler 1 error C2664: 'FindWindowW': Konvertierung des Parameters 2 von 'const char [11]' in 'LPCWSTR' nicht möglich c:\users\birk\documents\visual studio 2008\projects\spy\spy\spy.cpp 32
PS: Ich habe den letzten Codeschnipsel von Deforation verwendet.
-
Hallo
Dein WinAPI-Interface ist auf Unicode statt ASCII eingestellt. Du must also wchar_t* übergeben :
handle = FindWindow(NULL, L"Firefox");
Ich sehe in deiner Fehlermeldung "Visual Studio". Arbeitest du nun mit dem Borland Builder oder mit Microsoft Visual Studio?
bis bald
akari