![]() |
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 :) |
Re: TNA, wer kennt es nicht ;-)
Ja, du hast Recht. Jeder hier kennt die
![]() 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:
Zitat:
|
Re: TNA, wer kennt es nicht ;-)
Bessere/Schnellere Ergebnisse sind in der Code-Library zu finden:
![]() Nachtrag: Vielleicht habe ich dich auch falsch verstanden, jetzt, wo ich Mathias' Nachtrag sehe :roll: |
Re: TNA, wer kennt es nicht ;-)
Zitat:
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:
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.
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); ... Außerdem sollte ja noch jedes TNA ICON, das icon des Prozesses bekommen, der gerade Versteckt wurde. Das hatte ich so versucht :
Delphi-Quellcode:
aber es wurde nie ein Icon angezeigt :| obwohl es das Programm dort gibt.
ExtractAssociatedIcon(HInstance,'D:\Programme\Mozilla Thunderbird\thunderbird.exe',IconIndex); // <-- der feste Pfad war zum Testen
Ich hoffe nun war es verständlicher? |
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 03:44 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