Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi TNA, wer kennt es nicht ;-) (https://www.delphipraxis.net/35014-tna-wer-kennt-es-nicht-%3B.html)

perle 1. Dez 2004 14:35


TNA, wer kennt es nicht ;-)
 
hiho, hab ne kurze und wahrscheinlich auch nicht so schwierige Frage, aber ich komm einfach nicht drauf.

Ich will eine beliebige Anzahl von Fenster durch das drücken eines Hotkeys in die TNA minimieren (also das Fenster unsichtbar machen und dafür ein Icon erstellen).

nen Hotkey erstellen usw kann ich und auch das Erzeugen des Icons und das verstecken des Fensters nicht, das einzige wo ich nicht weiter weiss ist Folgendes :

- wie kann ich das WM_LBUTTONDOWN so machen, dass auch nur das Programm wiederhergestellt wird, auf dessen Icon ich geklickt hab? Denn wenn ich jedem Icon die selbe Callbackmsg zuweise, dann würden ja alle bzw nur das letzte Fenster wiederhergestellt oder?
Ich hoffe man versteht mein Problem.

- Das zweite Problem ist das Icon. Wie kann ich das Iconhandle von dem per FindWindow gefundenen Fenster bekommen und meinem Icon zuweisen?

Vielen Dank für jede Hilfe im Vorraus :)

MathiasSimmack 1. Dez 2004 14:36

Re: TNA, wer kennt es nicht ;-)
 
Ja, du hast Recht. Jeder hier kennt die Hier im Forum suchenTNA.

Ich habe deinen Beitrag zwar nur überflogen, aber IMHO wurden alle Fragen auf die ein oder andere Weise schon mal geklärt. Sei also nicht sauer, dass ich dich nur kurz an die Suchergebnisse (s. Link) verwiesen habe.


Okay, präziser:
Zitat:

Zitat von perle
- wie kann ich das WM_LBUTTONDOWN so machen, dass auch nur das Programm wiederhergestellt wird, auf dessen Icon ich geklickt hab? Denn wenn ich jedem Icon die selbe Callbackmsg zuweise, dann würden ja alle bzw nur das letzte Fenster wiederhergestellt oder?

Musst du mal ausprobieren. Ich glaube, das macht nichts. Ich habe irgendwo schon mal zwei Programme gesehen, die die selbe TNA-Message nutzen.

Zitat:

Ich hoffe man versteht mein Problem.
Weiß nicht. Habe ich? ;)

Zitat:

- Das zweite Problem ist das Icon. Wie kann ich das Iconhandle von dem per FindWindow gefundenen Fenster bekommen und meinem Icon zuweisen?
Willst du das Icon von anderen TNA-Programmen austauschen? Von externen, die nicht von dir sind? Oder wie?

Matze 1. Dez 2004 14:40

Re: TNA, wer kennt es nicht ;-)
 
Bessere/Schnellere Ergebnisse sind in der Code-Library zu finden: TNATNA

Nachtrag: Vielleicht habe ich dich auch falsch verstanden, jetzt, wo ich Mathias' Nachtrag sehe :roll:

perle 1. Dez 2004 15:03

Re: TNA, wer kennt es nicht ;-)
 
Zitat:

Zitat von MathiasSimmack
Weiß nicht. Habe ich? ;)

keine Ahnung, ich versteh die Antwort nich ;-)


Ich erklärs mal mit nem Beispiel :

Nehmen wir an ich wollte ein Programm schreiben, dass unsichtbar im Hintergrund läuft und auf das drücken eines Hotkeys wartet.
Sobald der Hotkey gedrückt worden ist hole ich mir das Handle des Fensters , dass den Focus hat (GetForeGroundWindow),
mache dies Unsichtbar (SendMessage(DasHandle,SW_HIDE)) und erstelle stattdessen ein TNA Icon....das hab ich normalerweise so gemacht :

Delphi-Quellcode:
const
  WM_TNAEVENT = WM_USER + 1;
...
var
  IconIndex: Word;
begin
  with TNA_Icon do
   begin
     cbSize := SizeOf(TNA_Icon);
     Wnd   := Handle;
     uID   := 0;
     uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
     szTip := 'blub';
     hIcon := Application.Icon.Handle;
     uCallbackMessage := WM_TNAEVENT;
   end;
   Shell_NotifyIcon(NIM_ADD,@TNA_Icon);
...
soooo wenn ich jetzt auf dieses Icon klicke, dann wird WM_TNAEVENT ausgelöst, wie kann ich nun in meinem Programm abfragen, welches Icon angeklickt wurde? Denn für jedes Fenster, dass ich per Hotkey in den Tray "geschickt" hab, hat ja ein Icon bekommen.
Außerdem sollte ja noch jedes TNA ICON, das icon des Prozesses bekommen, der gerade Versteckt wurde. Das hatte ich so versucht :

Delphi-Quellcode:
ExtractAssociatedIcon(HInstance,'D:\Programme\Mozilla Thunderbird\thunderbird.exe',IconIndex); // <-- der feste Pfad war zum Testen
aber es wurde nie ein Icon angezeigt :| obwohl es das Programm dort gibt.


Ich hoffe nun war es verständlicher?

perle 1. Dez 2004 16:04

Re: TNA, wer kennt es nicht ;-)
 
ok das erste Problem habe ich inzwischen selber lösen können, das einzige was noch nicht klappt, ist das Icon einer anderen Anwendung auszulesen und dem hIcon meiner NotifyIconData zuzuweisen. Falls da jemand nen Tipp hat wäre ich sehr dankbar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 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