Deutsch
Forum

Taskleiste und %desktop

 

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
 
27.08.2004  
 




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
Def REFRESH(4) !"USER32","RedrawWindow"
....
REFRESH(0,0,0,$0581)
....

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
 
27.08.2004  
 



Hallo Rolf...

Bitte lach dich jetzt nicht tot, ...aber so in etwa???
KompilierenMarkierenSeparieren
WINDOWSTYLE 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

 
27.08.2004  
 




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
 
27.08.2004  
 




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
 
27.08.2004  
 




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
 
27.08.2004  
 




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
 
27.08.2004  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.070 Betrachtungen

Unbenanntvor 0 min.
Georg Teles vor 26 Tagen
Thomas Freier18.02.2022
RudiB.04.02.2022
Sven Bader21.08.2021
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie