Autor Beitrag
DelphiNoobCoder
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 98

Win XP SP1

BeitragVerfasst: Mi 21.02.07 22:18 
Kann man mit Delphi ein fremdes Programm in den Tray minimieren?
Wie z.B. wenn man das Programm in den Ordner von der exe sagen wir Notepad.
Also diese delphi exe in den ordner wo Notepad.exe ist dann gibt man in Editfeld Notepd.exe ein und Notepad minimiert sich ins Tray. OK Dumme Idee were mir aber sehr wichtig.

MFG Martin


Moderiert von user profile iconChristian S.: Topic aus Sonstiges (Delphi) verschoben am Do 22.02.2007 um 00:01
Saubäär
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: Do 22.02.07 00:44 
Hi,

also das Notepad ins Tray zu minimieren (und wieder zurück) geht.
Mit dem Editfeld musste dich dann selber nochn bisschen beschäftigen. Tipp: Das Handle nicht über FindWindow, sondern irgendwie anders finden.
Hier aber der Code:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
uses ShellAPI, ...

const
 WM_TASKBAREVENT = WM_USER + 1;
  
public
{ Public-Deklarationen }
 procedure TaskBarAddIcon;
 procedure TaskBarRemoveIcon;


procedure TForm1.TaskBarAddIcon;
var tnid: TNotifyIconData;
    Owner: THandle;
begin
 with tnid do begin
  cbSize := SizeOf(TNotifyIconData);
  Wnd := FindWindow(nil'Unbenannt - Editor');
  uID := 1;
  uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
  uCallbackMessage := WM_TASKBAREVENT;
  hIcon := ExtractIcon(Handle, '%SystemRoot%\system32\notepad.exe'0);
  szTip := 'Editor';
  end;
 Shell_NotifyIcon(NIM_ADD, @tnid);

 Owner := FindWindow(nil'Unbenannt - Editor');
 if Owner <> 0 then
  ShowWindow(Owner, SW_HIDE);
end;

procedure TForm1.TaskBarRemoveIcon;
var tnid: TNotifyIconData;
    Owner: THandle;
begin
 with tnid do begin
  cbSize := SizeOf(TNotifyIconData);
  Wnd := FindWindow(nil'Unbenannt - Editor');
  uID := 1;
  end;
 Shell_NotifyIcon(NIM_DELETE, @tnid);

 Owner :=  FindWindow(nil'Unbenannt - Editor');
 if Owner <> 0 then 
  ShowWindow(Owner, SW_NORMAL);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 TaskBarAddIcon;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 TaskBarRemoveIcon;
end;


Gruß

Saubäär