![]() |
Shell Ersatz - Tray Icons
Hi,
nun habe ich wieder einmal eine Spezielle Frage! Ich bin gerade dabei mich mit einem kleinen Shell Ersatz zu spielen! D.H. Explorer.exe wird nicht geladen, sondern mein Programm.exe. So wie ich gemerkt habe werden Services usw trotzdem Automatisch gestartet. Die Programme die man im Autostart Ordner hatte muss man manuel starten. Nun ist meine Frage: Wenn ich so ein Programm lade und es hat ein Tray Icon ist dieses ja nicht sichtbar (Explorer.exe ist ja ncht geladen, also keine Taskleiste). Wie finde ich das heraus ob ein Tray Icon bei dem geladenen Programm mit dabei ist? Wenn ich weis das es ein Tray Icon hat kann ich das ja aus der gestarteten EXE heraus holen und als Image auf eine Form legen. Dann müsste nur noch mit dem Click auf das Icon die Funktionen ausgeführt werden, was sonst auch in der Taskleiste ausgeführt wird. Bin im Moment sehr ratlos wie man das machen könnte!? :gruebel: :gruebel: Kann da einer Helfen!? |
Re: Shell Ersatz - Tray Icons
Keine einer eine Idee?
Auch hätte ich noch eine Frage wegen Globalen Hooks und Shell! Ich mache in einer DLL einen globalen Keyboard Hook um meine Form anzeigen zu können:
Delphi-Quellcode:
Das funktioniert so ganz gut, aber....
function SetHookKeyBoard(WinHandle: HWND; MsgToSend: Integer;KeyBoardArray : Array of TKeyBoard): Boolean; stdcall;
var i : Integer; begin Result := False; if (MMFDataKeyBoard = nil) and (MMFHandleKeyBoard = 0) then begin MMFHandleKeyBoard := CreateMMF(MMFNameKeyBoard, SizeOf(TMMFDataKeyBoard)); if MMFHandleKeyBoard <> 0 then begin MMFDataKeyBoard := MapMMF(MMFHandleKeyBoard); if MMFDataKeyBoard <> nil then begin MMFDataKeyBoard.WinHandle := WinHandle; MMFDataKeyBoard.MsgToSend := MsgToSend; //get Array for shortcuts from the application for i := 0 to High(KeyBoardArray) do begin MMFDataKeyBoard.HandleHook[i].car1 := KeyBoardArray[i].car1; MMFDataKeyBoard.HandleHook[i].car2 := KeyBoardArray[i].car2; MMFDataKeyBoard.HandleHook[i].car3 := KeyBoardArray[i].car3; end; MMFDataKeyBoard.NextHook := SetWindowsHookEx(WH_GETMESSAGE, MsgFilterFuncKeyBoard, HInstance, 0); if MMFDataKeyBoard.NextHook = 0 then UnMapAndCloseMMFKeyBoard else Result := True; end else begin CloseMMF(MMFHandleKeyBoard); MMFHandleKeyBoard := 0; end; end; end; end; Wenn nun meine EXE als Shell geladen wird und kein Programm Fenster (egal ob Notepad, Taskmanager,...) sichtbar ist geht der Hook nicht!? Sozusagen bei ganz leeren Desktop (nur Hintergrund zu sehen). Öffne ich dann den Taskmanager geht der Hook wieder!? :wall: :wall: |
Re: Shell Ersatz - Tray Icons
1. nur eine Frage pro Thread
2. Zitat:
![]() |
Re: Shell Ersatz - Tray Icons
Danke!
Es haben sich mit der Zeit schon fast alle beide Fragen beantwortet! Ich erzeuge eine eigene TNA und bekomme auch die Tray-Icons + WM_COPYDATA der Anwendungen! Auch das mit dem Hook habe ich über einen HotKey gelößt. Nun geht es auch wenn kein Fenster sichtbar ist! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz