Eigene Uhr im Systray

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Eigene Uhr im Systray

Beitrag von roherter »

Code: Alles auswählen

;-(c) Robert Herter

;Rect Structure
Structure fg
  left.l
  top.l
  rigth.l
  bottom.l
EndStructure
Dim MyClock.fg(1)

;-Systray
hwnd=FindWindowEx_(FindWindow_("Shell_TrayWnd", ""), 0, "TrayNotifyWnd", "")

;-Child Window
GetWindowRect_(hwnd,@MyClock(0))
OpenWindow(1,(MyClock(0)\rigth-MyClock(0)\left-40),0,40,24,"",#PB_Window_BorderLess|#PB_Window_Invisible)
;-Font erstellen
FontID1=LoadFont(0,"Arial",9,#PB_Font_Bold) 

;-Gadget und Einstellungen für die Uhr
CreateGadgetList(WindowID(1))

  TextGadget(10,4,3,40,25,"")
  SetGadgetColor(10,#PB_Gadget_BackColor,RGB($25,$69,$DA))
  SetGadgetColor(10,#PB_Gadget_FrontColor,RGB($FF,$FF,$FF))
  SetGadgetFont(10,FontID1)
  SetWindowColor(1,RGB($25,$69,$DA))
  SetParent_(WindowID(1),hwnd);-Eltern fenster setzen
  ShowWindow_(WindowID(1),1);-Fenster anzeigen


;-Thread für die Uhr
Procedure mythread()
  Repeat
  If (ElapsedMilliseconds()-refreshtimer) > 1000 ; 1 Sekunde
    SetGadgetText(10, FormatDate("%hh:%ii", Date()) )
    refreshtimer=ElapsedMilliseconds()
  EndIf 
ForEver 
EndProcedure
;------
CreateThread(@mythread(),0);-Thread Starten


;-Hauptschleife
Repeat
 
  Event=WaitWindowEvent()  
  EventType=EventType()

Until EventType=#PB_EventType_RightClick

End
;---

Kann man noch viel dran erweitern.
Wenn die Taskleiste rechts oder links ist, dann funktioniert es im moment noch nicht!

Im moment nur für den Klassischen Skin.
Zuletzt geändert von roherter am 21.10.2006 23:34, insgesamt 3-mal geändert.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Re: Eigene Uhr im Systray

Beitrag von AND51 »

roherter hat geschrieben:Kann man noch viel dran erweitern wenn die taskleiste rechts oder links ist funktioniert es im moment noch nicht!
Stimmt, es muss noch viel getan werden, und momentan funktioniert es GAR NICHT :wink:

Du hast in zeile 30 einen Unterstrich vergessen, weil das ein API Befehl ist und kein Makro, keine Prozedur, Array oder LinkedList.

Habe den Fehler korrigiert und es geht wunderbar, aber wo ist der Sinn des Codes? Du klatschst einfach ein Fenster über die Zeitanzeige... :?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Kann man noch viel dran erweitern wenn die taskleiste rechts oder links ist funktioniert es im moment noch nicht!
Aua, sind Punkt und Komma denn so viel verlangt :cry: ?
Bild
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Falls du Showwindow() meinst, das funktioniert bei mir einwandfrei unter jaPBe für PB 4.0.

Aber ich habs mal oben angepasst.

@MVXA:Nicht immer nörgeln.
:o
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Antworten