Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Klick wird nicht erkannt!? (https://www.delphipraxis.net/5854-klick-wird-nicht-erkannt.html)

Jens Schumann 21. Jun 2003 11:32

Hallo Daniel,
so macht man das
Delphi-Quellcode:
procedure TFormWTC.ShowInTBNA;
var
    aNID : TNotifyIconData;
begin
  with aNID do begin
    cbSize := SizeOf(TNotifyIconData);
    Wnd := Handle; // Hier wird das Handle des Formulars übergeben !!!
    uID := cTaskBarId;
    uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
    uCallBackMessage := WM_TRAYMSG;
    hIcon := LoadImage(hInstance, PChar('WTC16'), IMAGE_ICON, 16, 16, 0);
    szTip := 'WTC';
  end;
  Shell_NotifyIcon(NIM_ADD, @aNID);
  Application.ShowMainForm:=False;
  ShowWindow(Application.Handle,SW_HIDE);
end;
Du initialisierst TNotifyIconData im var Abschnitt. Davon kann ich nur abraten. Schreibe Die lieber ne Methode und mach es dort.

S - tefano 21. Jun 2003 11:34

Hi,

Aber dann würd doch der linke Doppelklick auch nicht gehen, oder?
Und so Sachen wie WM_TRAYMSG und so hast du auch richtig deklariert?
Oder ist das vielleicht auch unter Win32 plattformabhängig? Hab ich vor wenigen Tagen erst mit Hooks erlebt, das man mit denen unter NT-Systemen wegen der verschiedenen Messages ganz anders arbeiten muss als unter 9x...

Bis dann,

S - tefano

Nachtrag
Mist, zu langsam; Mist, falscher Einfall.

Jens Schumann 21. Jun 2003 11:39

Hallo Daniel,
ich verwende RegisterWindowsMessage um den Wert für die uCallBackMessage zu erhalten. Dieser Wert ist dann systemweit eindeutig.
Dann sieht das ganze so aus:
Delphi-Quellcode:
FTaskBarMessage : Word;
Im constructor dann
Delphi-Quellcode:
FTaskBarMessage := RegisterWindowMessage('JSWTCTaskBarMessage');
Delphi-Quellcode:
procedure TFormWTC.WndProc(var Message: TMessage);
begin
  If Message.Msg=FTaskBarMessage then
    begin
    Case Message.lParam of
      WM_RButtonDown  : ShowPopupMenu;
       end;
    end;
  inherited;
end;
Die Sache funktioniert unter Win9x,NT und 2000

Daniel B 21. Jun 2003 12:10

Hallo,

hmm, ich befürchte das es die ganze Zeit schon ging. Nur das nach dem komplizieren, das Editorfenster ja noch sichtbar ist, daher wurde die Message dahinter angezeigt. Sieht wohl so aus und da ich immer mit Strg+F2 Beende, fällt das auch nicht auf das die Message da noch irgendwo ist sondern mit verschwindet.
Jetzt wird die Message angezeigt und ich kann mich jetzt mal dem Menü zuwenden...

Aber trotzdem Danke vielmals für die Hilfe Jens! :thuimb:

Grüsse, Daniel :hi:

Christian Seehase 21. Jun 2003 12:39

Moin Jens,

um ganz sicher zu gehen lasse ich für den zu registrierenden Text immer ein GUID generieren (STRG-SHIFT-G)

Jens Schumann 21. Jun 2003 20:13

Hallo Christian,
gute Idee.
Danke

Christian Seehase 21. Jun 2003 20:22

Moin Jens,

danke für die Rückantwort.
Da konnte ich mir noch mal den dusseligen Satz ( :oops: ) durchlesen und korrigieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 Uhr.
Seite 2 von 2     12   

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