AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Shell Ersatz - Tray Icons

Ein Thema von schwa226 · begonnen am 6. Jul 2009 · letzter Beitrag vom 22. Jul 2009
Antwort Antwort
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

Shell Ersatz - Tray Icons

  Alt 6. Jul 2009, 12:48
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!?



Kann da einer Helfen!?
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#2

Re: Shell Ersatz - Tray Icons

  Alt 7. Jul 2009, 14:43
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:
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;
Das funktioniert so ganz gut, aber....

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!?

  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#3

Re: Shell Ersatz - Tray Icons

  Alt 19. Jul 2009, 06:04
1. nur eine Frage pro Thread

2.
Zitat von schwa226:
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).
ich vermute mal, da keine TNA existiert, daß auch keine Icons exisieren (die wurden von der API MSDN-Library durchsuchenShell_NotifyIcon einfach nicht erstellt)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#4

Re: Shell Ersatz - Tray Icons

  Alt 22. Jul 2009, 08:42
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!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz