| |
|
|
Rolf Koch | Heute hab ich auch mal eine Frage Seit lannnnnnger lannnnger Zeit suche ich nach einer Möglichkeit ein per create....%DESKTOP .... in der Taskleiste zu verstecken. Was ich meine: Wenn ich ein Objekt (Static, Dialog u.s.w) auf %Desktop erstelle, dann wird leider immer das Teil in der Taskleiste angezeigt. Dies möchte ich unterbinden. Ich kann mir vorstellen, daß irgendjemand mal ähnliche Probleme hatte und diese gelöst hat.
Zweite Sache ist, daß wenn ich etwas auf %Desktop erstelle und möchte, daß dieses Element wirklich in den Hintergrund fliegt (also absoluter Hintergrund - letzte Instance Desktop halt) dies nicht mit den üblichen Parametern per Setwindowpos oder selbige per Api, richtig ganzzzzz weit im Hintergrund (eigentlich ähnlich dem Handle Internet Explorer_Server - dies funtioniert - aber birgt viele Abstürze beim Neuzeichen) landet.
Nochwas zur INFO (nicht als Frage) - Für Fortgeschrittene Ich hatte eine ganz starke Lösung gefunden (hatte ich gedacht): Ich setzte meine Anwendung auf das Handle Internet Explorer_Server und das Teil war immer wie die Desktopicons im Hintergrund (ein Static auf diesem Handle). Lief eigentlich perfekt, aber: nun merkte ich, daß bei - Sytemhintergrundwahl, Bildschirmschonerwahl u.s.w das Handle des IE_Server einfach zerstört wird. Also überwachte ich das Internet Explorer_Server Handle auf If Desktop&=Desktop_alt& und erstellte bei Änderung mein Static neu. Jedoch Vorsicht: Falls einer sich damit schon beschäftigt hat: Wenn man wie beschrieben eine systemweite Wahl (Aktualisieren des Desktops, Theme wählen u.s.w ) ändert und man sein Objekt auf diesem Internet Explorer_Server erstellt hat, so muss man tierisch aufpassen, denn das Handle dieses IE_Server wird innerhalb von ungewissen Sekunden mehrmals erneuert. Was hat da Microsoft eigentlich geraucht? Aber nicht nur dies, sondern wird irgendwie bei vielen verschiedenen Aktionen dieses Microsofthandle einfach zerstört und wieder neu erstellt, so daß man auch bei einer permanenten Überwachung die Gefahr läuft, sein Handle auf 0 zu setzen - und somit gesalzene Abstürtze bekommt Ende der INFO :biggrin:
Also will ich jetzt wieder meinen geliebten Standart (da läuft meine Anwendung bestens (also auf %DESKTOP anstatt auf fremden Handles)) - bis auf die Probleme die ich am Anfang geschildert hatte (Taskleist und Hintergrund).
Rolf P.S.: Mircosoft und die blöde (trotzdem gute) Systemwiederherstellung: Hatte heute ein extremes Problem und musste 3 Tage zurück. Leider hatte ich mir eine schöne Dll mit 31 Icons erstellt. Jo - die ist natürlich weg und auch die 31 per Hand gezeichnete Icons - hat Bill einfach gelöscht. Naja könnte ja wieder das Fehlerhafte System zurückspielen und die Icons und die Dll umbenennen - macht auch Ihr das in Zukunft Nach Erstellen einer DLL oder ICONS umbenennen. Z.B.: ICON.DLL > ICON.DL_ oder ICON1.ICO > ICON1.IC_ und Bill hat diese wenigstens nicht gelöscht Finde ich Mist, daß die einfach alles dann löschen, was ausführbar ist und nach dem Wiederherstellungsdatum erstellt wurde |
|
|
| |
|
|
|
Rolf Koch | Das mit dem Hintergrund ist gelöst. Es wurd in Wirklichkeit nur ein Abbild meiner Anwendung auf den offenen Fenstern gezeichnet. Mit KompilierenMarkierenSeparieren zeichnet man alle Fenster neu und somit ist das erste Problem verschwunden
Problem 1. bleibt noch bestehen: Wie bringe ich meiner Anwendung bei keinen Taskleisteneintrag bei %DESKTOP zu erstellen oder diesen zumindest zu verstecken.
Rolf |
|
|
| |
|
|
|
| Hallo Rolf...
Bitte lach dich jetzt nicht tot, ...aber so in etwa??? KompilierenMarkierenSeparierenWINDOWSTYLE 16+32+64
Windowtitle "Programmfenster"
Window 0,0-0,0
@SHOWWINDOW(%HWND,0)
SETTRUECOLOR 1
Declare Programmfenster&
Windowstyle 31
LET Programmfenster&=@createWindow(%HWND,"Programmfenster",0,0,640,440)
SETWINDOWPOS Programmfenster&=0,0-640,440;0
While 0=0
waitinput
WEND
|
|
|
| |
|
|
|
Andreas Miethe
| Hallo Rolf,
sieh Dir das mal an ! Damit kannst Du dein Fenster aus der Taskleiste aus- und einblenden.
[...] |
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 27.08.2004 ▲ |
|
|
|
|
Rolf Koch | Zuerst einmal herzlichen Dank Euch beiden.
@AH: Ja Dein Beispiel funktioniert. Jedoch ersetzte mal %Hwnd durch %Desktop. Und das ist mein Problem, ich nutzte ein Static welches ich auf %Desktop ablege. Funktioniert einwandfrei, aber es lässt sich nicht verstecken.
@Andreas: Wäre ja genial, aber wie verstecke ich den damit ein Unterfenster, also mein auf %Desktop erstelltes STATIC?
Nochmals Danke Rolf |
|
|
| |
|
|
|
Rolf Koch | Juchuuuu - @Andreas M. Dein Ole_HideShow funktioniert doch :biggrin: Ich musste nur einen zusätzlichen Parameter übergeben und zwar den des zu versteckenden Handel. Also anstatt %HWND einfach mein Static&. Echt klasse DANKE!
Nur komischerweise muss ich andauernd HideMyWindow 0,static&
aufrufen, da wenn man irgendeinen Button in der Taskleiste klickt und die Anwendung/Ornder u.s.w angezeigt wird oder verkleinert wird, daß Fenster aufeinmal wieder da ist. Dies sieht natürlich nicht so toll aus, wenn bei Aktionen unten dauernd kurz mein Programm eingeblendet und wieder ausgeblendet wird. Ich dachte, daß dies für die gesamte Dauer meines Programmlaufs gilt. ?????
Rolf |
|
|
| |
|
|
|
Andreas Miethe
| Hallo Rolf,
habe ich auch gedacht das es fuer immer gilt. Geht aber scheinbar nur mit dem Hautpfenster. Aber es gibt eine noch viel einfachere Methode ! Wenn Dein Static den erweiterten Fensterstil WS_WX_TOOLWINDOW hat dann erscheint es erst gar nicht in der Taskbar. KompilierenMarkierenSeparieren $H windows.ph
Declare static&
Static& = ~CreateWindowEx(~WS_EX_TOOLWINDOW,"Static","Test",~WS_Visible | ~WS_Child,0,0,120,24,%Desktop,0,%hInstance,0)
cls
waitinput
end
|
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 27.08.2004 ▲ |
|
|
|
|
Rolf Koch | JAAA! Danke Andreas. Ich musste nur noch $0E hinzuaddieren, da es sich um ein Bitmapstatic handelt und es taucht nicht mehr auf!!! PERFEKT. Jetzt kann ich weitermachen.
Direkte Frage dazu noch: Ich nutze auf diesem Static SKCONTROLHOVERBUTTONS. Diese lassen sich nach einem Waitinput nicht per Getfocus(SK...) ansprechen. Liegt an der Tatsache, das die Teile sich auf dem Static liegen. Also muss ich anstatt WAITINPUT ein Getmessage nutzen um es per %MWND = SK.... abzufragen - das klappt, bringt aber meine Trayfunktion etwas zum lahmen. Langer Text , kurze Frage: Welchen Stil würdest Du dem Static noch addieren, damit die Hoverbuttons auf Getfocus(SK.....) reagieren? Also dem Static vorgaukeln, es wäre ein Dialog oder Window.
Rolf |
|
|
| |
|
|
|
Andreas Miethe
| Hallo Rolf,
ich fürchte da gibt es keinen passenden Stil ! Verpass dem Static ein CALLBACK. In dem Callback wird dann WM_COMMAND angefragt und eine Usermessage ans Hautprogramm geschickt.
Beispiel : KompilierenMarkierenSeparieren $H windows.ph
$H messages.ph
Set("FastMode",1)
Declare static&,Button&,Ende&,OldStaticProc&
Declare Image&
Proc DummyCallback
Parameters wnd&,msg&,wparam&,lparam&
If msg& = ~WM_COMMAND
Usermessage an %hwnd schicken
Sendmessage(%hwnd,$4000,0,lParam&)
Endif
Return ~CallWindowProc(OldStaticProc&,wnd&,msg&,wparam&,lparam&)
EndProc
UserMessages $4000
Window 40,40-640,480
Static& = ~CreateWindowEx(~WS_EX_TOOLWINDOW,"Static","Test",~WS_Visible | ~WS_Child | $E,0,0,120,24,%Desktop,0,%hInstance,0)
Image& = ~LoadImage(0,"c:\windows\setup.bmp",0,200,100,~LR_LOADFROMFILE)Pfad anpassen
SendMessage(Static&,~STM_SETIMAGE,~IMAGE_BITMAP,Image&)
Button& = Create("Button",Static&,"klick",0,0,120,24)
~RedrawWindow(%Desktop,0,0,$0581)
Callback setzen
OldStaticProc& = ~SetWindowLong(Static&,~GWL_WNDPROC,ProcAddr(DummyCallback,4))
WhileNot Ende&
waitinput
If %Umessage = $4000
If &ULParam = Button&
Print "Gotcha",&ULParam
Endif
Endif
Wend
end
|
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 27.08.2004 ▲ |
|
|
|
|
Rolf Koch | JA, jetzt hast Du mir wieder mal alle Fragen zu meiner Zufriedenheit beantwortet. Funktioniert jetzt bestens!!! Danke Andreas
Rolf |
|
|
| |
|
|