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 ?