Einzelnen Beitrag anzeigen

Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#15

Re: SystemTray - TNA erweitert!

  Alt 16. Aug 2005, 21:55
Zitat von Daniel G:
//Edit2:

TrayClockWClass Zu dieser Klasse gibt es bei Microsoft ja überhaupt keine Infos?
Naja, alles wollen die bestimmt auch nicht veröffentlichen, oder ?

Habe mal den Code den axellang gepostet hat umgebaut, so dass er exakt ins TrayClock - Fenster passt. Nachtei ist das jeden mal beim WM_Paint Ereignis der Uhr das neue Fenster wieder Übermalt wird.

Delphi-Quellcode:
procedure TForm1.ReplaceSystemClock;

var
  Rect: TRect;
begin
  TaskbarHwnd := FindWindow('Shell_TrayWnd', nil);
  TrayHwnd := FindWindowEx( TaskbarHwnd, 0, 'TrayNotifyWnd', nil);
  ClockHwnd := FindWindowEx(TrayHwnd, 0, 'TrayClockWClass', nil);

  GetWindowRect(ClockHwnd, Rect);

  Panel1.AutoSize := False;
  Panel1.Left := 0;
  Panel1.Top := 0;
  Panel1.Width := Rect.Right - Rect.Left;
  Panel1.Height := Rect.Bottom - Rect.Top;

  Windows.SetParent(Panel1.Handle, ClockHwnd);

  Panel1.Caption := 'Test';
end;

Um das zu umgehen muss man halt "nur" dieses Ereignis auf seine Paint-Routine umlenken.

Ein Link zu selben Thema dazu in russisch: http://tusovka.co.il/article371.html


Leider habe ich bei diesem Code ein Problem mit :
Code:
[b]procedure[/b] GetAndSet(h: integer);
[b]var[/b]
  p, p2: Trect;
  hand, h2: integer;
[b]begin[/b]
  [b]if[/b] [color=red]pointer(getwindowlong(h, GWL_WNDPROC))@WinProc[/color] [b]then[/b]
  [b]begin[/b]
    SavedProc := pointer(SetWindowLong(h, GWL_WNDPROC, cardinal(@Winproc)));
  [b][...][/b]
[Fehler] ...: Ausdruckstyp muß BOOLEAN sein ?
Angehängte Dateien
Dateityp: zip tracclock_268.zip (1,4 KB, 71x aufgerufen)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat