Jeg har lide to spørgsmål. De gir 20 point hver.
1. Hvordan gør man sådan at når man trykker på en knap, så minimere den programmer til systrayen.
2. Hvordan gør man sådan at programmet starter op når windows starter?
Mvh
Jesper
vedr. pkt 1:
A) tilføj ShellAPI i din uses klausul.
B) Opret en selv defineret windows message identifikation , altså eksempelvis:
const WM_TRAYMessage = WM_USER + 1;
C) Tilføj den tilhørende message handle procedure, altså eksempelvis:
procedure TrayMessage(var message: TMessage); message WM_TRAYMESSAGE;
D) Opret en variabel af typen TNotifyIconData, her eksempelvis tray: TNotifyIcondata som variabel i klassen.
E) i formens OnCreate procedure initialiseres den variabel som blev oprettet under pkt D:
with Tray do
begin
cbSize := SizeOf(Tray);
Wnd := Handle;
uID := 0;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage:= WM_TRAYMessage;
hIcon := Application.Icon.Handle;
szTip := 'hint message';
end;
Shell_NotifyIcon(NIM_ADD, @Tray);
I den tilhørende destroy metode skal tilføje følgende kald:
Shell_NotifyIcon(NIM_DELETE, @Tray);
F) proceduren fra punkt C kunne se således ud:
procedure TMain.TrayMessage(var message: TMessage);
var
p: TPoint;
begin
case Message.LParam of
WM_RBUTTONDOWN:
begin
SetForegroundWindow(Handle);
GetCursorPos(P);
PopupMenu1.Popup(P.X, P.y);
PostMessage(Handle, WM_NULL, 0,0);
end;
end;
end;
Popup menuen kunne indeholde to menupunkter Vis og skjul. I den tilførende vis metode kaldes Show(), hvilket selvsagt medfører at dit skærmbillede vises, mens omvendt Skjul kalder hide();.
G) i projektfilen skrives eksempelvis:
Application.Initialize;
Application.ShowMainForm := false;
Application.CreateForm(TMain, Main);
Application.Run;
Herefter compiles- og køres programmet. Klik på ikonet i systray (hvilket gerne skulle vises din popup menu) og vælge vis. Dit skærmbilledet skulle herefter gerne dukke frem.
m.v.h.
Jørgen