ich habe schon vor einiger Zeit mir ein Programm geschrieben das die Zeit erfasst die ich am Rechner verbringe. Das Programm wird mit "Dateiname.exe Start" im Autostart Ordner positioniert und legt sich in die Tray. beim DoppelKlick erscheint eine Tabelle mit den Ein- und Ausgängen.
Code: Alles auswählen
; PCRun
;~~~~~~~
;- Konstanten
Enumeration ;Fenster
#Window_0
EndEnumeration
Enumeration ;Gadget
#LISTGRID
#SYSTRAY
#IMAGEVIEW
EndEnumeration
#False = 0
#True = 1
#Real = -1
#BASEFILENAME = "PCRun"
#SEPERATOR = ";"
#DATAEXT = ".dat"
;- Variablen
NewList DS.s()
Global baseQuit.b
;- Daten
DataSection
SetupData:
Data.s "User", "Datum", "Zeit", "Art"
EndDataSection
;- Source
Declare DataWrite(Value.s)
Declare.l WindowCallBack(WindowID, Message, wParam, lParam)
Declare.l TrayCallBack(WindowID, Message, wParam, lParam)
Declare Main(Value.b)
Declare DataRead()
Declare Open_Window_Base(Value.b)
Procedure Main(Value.b)
Protected baseEvent.l
baseQuit = #False
Open_Window_Base(Value)
If (Value = #True)
DataWrite("ON")
SetWindowCallback(@TrayCallBack())
Else
SetWindowCallback(@WindowCallBack())
;PureCOLOR_SetGadgetColorEx(#LISTGRID, $000000, $FFFFFF, $FFFF80, #PureCOLOR_LV_AlternateColors)
;If (PureLVSORT_SelectGadgetToSort(#LISTGRID, #True) = #PureLVSORT_Ok)
; PureLVSORT_SetColumnType (#LISTGRID, 0, #PureLVSORT_String)
; PureLVSORT_SetColumnType (#LISTGRID, 1, #PureLVSORT_DateDDMMYYYY)
; PureLVSORT_SetColumnType (#LISTGRID, 2, #PureLVSORT_NoSorting)
; PureLVSORT_SetColumnType (#LISTGRID, 3, #PureLVSORT_String)
; PureLVSORT_SortListIconNow(#LISTGRID, 1, #Real)
;EndIf
EndIf
Repeat
baseEvent = WaitWindowEvent()
Select baseEvent
Case #PB_Event_CloseWindow
baseQuit = #True
Case #PB_Event_SysTray
If (EventType() = #PB_EventType_LeftDoubleClick)
RunProgram(#BASEFILENAME + ".exe", "", "")
EndIf
EndSelect
Until(baseQuit = #True)
EndProcedure
Procedure.l TrayCallBack(WindowID, Message, wParam, lParam)
If (Message = #WM_QUERYENDSESSION)
DataWrite("OFF")
baseQuit = #True
ProcedureReturn #True
Else
ProcedureReturn #PB_ProcessPureBasicEvents
EndIf
EndProcedure
Procedure.l WindowCallBack(WindowID, Message, wParam, lParam)
ReturnValue.l = #PB_ProcessPureBasicEvents
;ReturnValue = PureLVSORT_CallBack(WindowID, Message, wParam, lParam, ReturnValue)
;ReturnValue = PureCOLOR_CallBack (WindowID, Message, wParam, lParam, ReturnValue)
ProcedureReturn ReturnValue
EndProcedure
Procedure DataWrite(Value.s)
Protected Text.s, User.s
Buffer.s = Space(1024)
bufsize.l = 1024
GetUserName_(@Buffer, @bufsize)
User = PeekS(Buffer,bufsize)
Text = User + #SEPERATOR + FormatDate("%dd.%mm.%yyyy", Date()) + #SEPERATOR + FormatDate("%hh:%ii", Date()) + #SEPERATOR + Value
If OpenFile(0, #BASEFILENAME + #DATAEXT)
FileSeek(Lof())
WriteStringN(Text)
CloseFile(0)
EndIf
EndProcedure
Procedure Open_Window_Base(Value.b)
Protected Text.s
If Value
If OpenWindow(#Window_0, 0, 0, 0, 0, #PB_Window_SystemMenu | #PB_Window_Invisible, "Computerlaufzeit")
AddSysTrayIcon(#SYSTRAY, WindowID(), LoadImage(#IMAGEVIEW, #BASEFILENAME + ".ico"))
SysTrayIconToolTip(#SYSTRAY, #BASEFILENAME)
HideWindow(#Window_0, #True)
EndIf
Else
If OpenWindow(#Window_0, 216, 0, 314, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered| #PB_Window_TitleBar , "Computerlaufzeit")
If CreateGadgetList(WindowID())
Restore SetupData: Read Text
ListIconGadget(#LISTGRID, 5, 5, (WindowWidth() - 10), (WindowHeight() - 10), Text, 100, #PB_ListIcon_GridLines)
Read Text: AddGadgetColumn(#LISTGRID, 1, Text, 100)
Read Text: AddGadgetColumn(#LISTGRID, 2, Text, 050)
Read Text: AddGadgetColumn(#LISTGRID, 3, Text, 050)
DataRead()
EndIf
EndIf
EndIf
EndProcedure
Procedure DataRead()
Protected Count.l, Zaehler.l, Result.s
If ReadFile(0,#BASEFILENAME + #DATAEXT)
While (Eof(0) = #False)
AddElement(DS())
DS() =ReadString()
Wend
CloseFile(0)
Count = (CountList(DS()) - 1)
LastElement(DS())
For Zaehler = 0 To Count
Result = ReplaceString(DS(), #SEPERATOR, #LF$)
AddGadgetItem(#LISTGRID, -1, Result)
PreviousElement(DS())
Next Zaehler
ClearList(DS())
Else
MessageRequester("Infobox", "Keine Daten vorhanden.")
EndIf
EndProcedure
If (ProgramParameter() = Trim("")): Main(#False): Else: Main(#True): EndIf
End
Ich hoffe es hilft dir bei deinen eigenen Programm.