 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 01.02.2009, 19:30 Titel: [gelöst] Fenster verstecken |
|
|
Hey,
Ich versuche beliebige Fenster zu verstecken.
Immer das, das im Vordergrund ist, wenn ein Tastenkürzel gedrückt wird.
Das klappt aber nur manchmal:
Code: |
hwnd=getforegroundwindow
showwindow(hwnd,sw_minimize)
showwindow(hwnd,sw_hide)
showwindow(hwnd,sw_hide)
|
Exakt so klappt es bei Vollbildfenster, bspw. Far Cry, wenn ich es in eine loop setze und sleep 1 als Intervall nehme.
Es klappt dann aber nicht mehr bei nicht-Vollbildmodus-Fenstern.
Da bricht dann irgendwie alles zusammen und komische Dinge passieren^^
Als workaround dachte ich überprüfe ich halt ob ein Fenster im Vollbildmodus läuft oder nicht, aber ich finde einfach keine Möglichkeit das herauszufinden.
Dann bleibt zuletzt noch das Problem, dass bei Programm im Vollbildmodus ein icon in der Taskleiste bleibt, obwohl ich es ja "hide".
Habt ihr ne Idee wie ich das Problem lösen kann?
mfg noop
Zuletzt bearbeitet von noop am 03.02.2009, 14:35, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.02.2009, 19:32 Titel: |
|
|
http://www.xtremevbtalk.com/showthread.php?t=278342
Hilft der 5. Beitrag weiter? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 02.02.2009, 11:50 Titel: |
|
|
Mit ShowWindow auf SW_HIDE setzen. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 02.02.2009, 12:11 Titel: |
|
|
So hat er es ja in seinem Startpost auch gemacht, aber offenbar funktioniert das nicht so ganz gut.  |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 02.02.2009, 12:43 Titel: |
|
|
Zitat: | Da bricht dann irgendwie alles zusammen und komische Dinge passieren^^ |
Diese Aussage sollte mal präzisiert werden!
Man kann mit GetWindowPlacement den Anzeigestatus des Fensters abfragen:
Zitat: | The GetWindowPlacement function retrieves the show state and the restored, minimized, and maximized positions of the specified window.
BOOL GetWindowPlacement(
HWND hWnd, // handle of window
WINDOWPLACEMENT *lpwndpl // address of structure for position data
);
Parameters
hWnd
Identifies the window.
lpwndpl
Points to the WINDOWPLACEMENT structure that receives the show state and position information.
Before calling GetWindowPlacement, set the length member of the WINDOWPLACEMENT structure to sizeof(WINDOWPLACEMENT).
GetWindowPlacement fails if lpwndpl->length is not set correctly.
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The flags member of WINDOWPLACEMENT retrieved by this function is always zero. If the window identified by the hWnd parameter is maximized, the showCmd member is SW_SHOWMAXIMIZED. If the window is minimized, showCmd is SW_SHOWMINIMIZED. Otherwise, it is SW_SHOWNORMAL.
The length member of WINDOWPLACEMENT must be set to sizeof(WINDOWPLACEMENT). If this member is not set correctly, the function returns FALSE.
See Also
SetWindowPlacement, WINDOWPLACEMENT |
_________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 03.02.2009, 12:54 Titel: |
|
|
@Jojo:thx. 2 Minuten später ne Antwort und ich kann erst Ewigkeiten später reingucken-suckt
Mal sehen ob mir das weiterhilft.
1.@Elektronix:yep da hat 28398 recht. Klappt bei normalen Fenstern, wie z.b Firefox. Sobald du aber zu Vollbildanwendungen übergehst weigern die sich.
2.@Elekronix: Bin mir nicht sicher, was an der Anweisung anders ist, als an der Anweisung showwindow. Ich habe mich immer von solche stuctures ferngehalten...da hatte ich immer Probleme mit.
So was dann für komische Dinge passieren:
1.Die Auswirkungen sind nicht immer die gleichen
2.Auswirkungen:
-Alles friert ein und nur per Taskmanager kann ich dann mich abmelden und neu anmelden um das Problem zu lösen.
-Das Fenster wird minimiert aber in der Taskleiste ist noch ein Symbol das sich langsam nach rechts bewegt.
-Das Fenster wird minimiert aber das Symbol in der Taskleiste bleibt(Diesmal ohne Zuckungen)
-Das Fenster bleibt im Vordergrund. Lediglich manchmal scheinen Teile anderer Fenster durch(Sowie wenn der WMP beim Liedwechsel sich flackernd einblendet)
-Es passiert gar nichts und das Fenster bleibt ohne Reaktion.
So und jetzt kümmere ich mich mal wieder ums Programm  |
|
Nach oben |
|
 |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 03.02.2009, 14:34 Titel: |
|
|
Yay
Es klappt.
thx für die Hilfe.
Hier mal das Grundgerüst meines Programmes:
Code: |
#include once "windows.bi"
declare sub debuffer
dim hwnd as hwnd = 0
dim keydown as integer = 0
debuffer
do
if getasynckeystate(vk_control) and getasynckeystate(89) then
if keydown=0 then
if hwnd=0 then
hwnd=getforegroundwindow
postmessage(hwnd,WM_SYSCOMMAND,sc_minimize,0)
do
sleep 1
loop until isiconic(hwnd)
showwindow(hwnd,sw_hide)
else
showwindow(hwnd,sw_show)
hwnd=0
end if
keydown=1
end if
else
keydown=0
end if
if getasynckeystate(vk_lmenu) and getasynckeystate(vk_escape) then
if hwnd>0 then showwindow(hwnd,sw_show)
end
end if
sleep 1
loop
sub debuffer
dim as integer key,result
for key=1 to 255
result=getasynckeystate(key)
next key
end sub
|
|
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|