j'aimerais beaucoup savoir votre avis dessus
le programme prends des screenshot et ecrit un fichier log avec le fenetres actives
Code : Tout sélectionner
;- Les Preparations
Enumeration
#MENU_ChangePath:#MENU_OpenPath
#MENU_1sec:#MENU_5sec:#MENU_10sec:#MENU_30sec
#MENU_60sec:#MENU_90sec:#MENU_120sec:#MENU_300sec:#MENU_600sec
#MENU_Good:#MENU_Medium:#MENU_Low
#MENU_Lan:#MENU_About:#MENU_Quit
#MENU_AutoRun:#MENU_CancelAutoRun:#MENU_Secret
EndEnumeration
Global Dim l.s(40,2)
Global Dim sec.l(9)
Global path.s,lan,quality.l,seconds,lan,secret
Global pathpref.s="C:\Program files\Rigulon\"
Global pathlog.s="C:\Program files\Rigulon\Logs\"
Global namofil.s
Procedure savefile(handle.l,name.s)
CloseFile(0)
OpenFile(0,name)
FileSeek(0,Lof(0))
EndProcedure
Procedure.s WMGetText(Handle.l)
If handle
Buffer.s = Space(255)
SendMessage_(Handle, #WM_GETTEXT, 256, @Buffer)
result.s = PeekS(@Buffer)
EndIf
ProcedureReturn result
EndProcedure
Procedure StartWithWindows(state.b,nam.s)
Protected key.l = #HKEY_CURRENT_USER ;or #HKEY_LOCAL_MACHINE
Protected Path.s = "Software\Microsoft\Windows\CurrentVersion\Run"
Protected Value.s = nam
Protected String.s = ProgramFilename()
Protected CurKey.l
If state =1
RegCreateKey_ (key,@Path,@CurKey)
RegSetValueEx_ (CurKey,@Value,0, #REG_SZ ,@String, Len (String))
Else
RegOpenKey_ (key,@Path,@CurKey)
RegDeleteValue_ (CurKey,@Value)
EndIf
RegCloseKey_ (CurKey)
EndProcedure
Procedure.s t(x):ProcedureReturn l(x,lan):EndProcedure
Procedure lan()
SetMenuTitleText(0,0,t(1)+" = "+path)
SetMenuTitleText(0,1,t(27)+" ="+Str(seconds)+t(28))
SetMenuTitleText(0,2,t(15)+" = "+t(quality+14))
SetMenuTitleText(0,3,t(29))
SysTrayIconToolTip(1, t(22))
For k=0 To 10
SetMenuItemText(0,k+#MENU_ChangePath,t(k+4))
Next
For k=0 To 5
SetMenuItemText(0,k+#MENU_Good,t(k+16))
Next
SetMenuItemText(0,#MENU_AutoRun,t(30))
SetMenuItemText(0,#MENU_CancelAutoRun,t(31))
SetMenuItemText(0,#MENU_Secret,t(32))
EndProcedure
Procedure ScreenShot(a)
Repeat
date.s=FormatDate("%yyyy-%mm-%dd",Date())
hour.s=FormatDate("%hh-%ii-%ss",Date())
CreateDirectory(path.s+date)
FileName.s=Path+date+"\"+date+" "+hour+".jpg"
If CreateImage(0,GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN))
DesktopWindow=GetDesktopWindow_()
DC=GetDC_(DesktopWindow)
StartDrawing=StartDrawing(ImageOutput(0))
BitBlt_(StartDrawing,0,0,ImageWidth(0),ImageHeight(0),DC,0,0,#SRCCOPY)
StopDrawing()
ReleaseDC_(DesktopWindow,DC)
If quality<>0
ResizeImage(Im,ImageWidth(0)/quality*2,ImageHeight(0)/quality*2)
EndIf
UseJPEGImageEncoder()
SaveImage(0,FileName,#PB_ImagePlugin_JPEG,7)
FreeImage(0)
EndIf
Delay(1000*seconds)
ForEver
EndProcedure
Procedure prefs(key.s,val.l)
OpenPreferences(pathpref.s+"prefs.yhe")
PreferenceGroup("info")
WritePreferenceLong(key,val)
ClosePreferences()
EndProcedure
Procedure texte()
sec(1)=1:sec(2)=5:sec(3)=10:sec(4)=30:sec(5)=60:sec(6)=90:sec(7)=120:sec(8)=300:sec(9)=600
l(1,1)="Path":l(4,1)="Change Path":l(5,1)="Open Directory":l(27,1)="Time Between Shots"
l(28,1)=" Seconds":l(6,1)="1 Second":l(7,1)="5 Seconds":l(8,1)="10 Seconds":l(9,1)="30 Seconds"
l(10,1)="1 Minut":l(11,1)="1.5 Minuts":l(12,1)="2 Minuts":l(13,1)="5 Minuts":l(14,1)="10 Minuts"
l(15,1)= "Quality":l(16,1)="Good":l(17,1)="Medium":l(18,1)="Low":l(19,1)="Francais":l(20,1)="About"
l(21,1)="Quit":l(22,1)="** Rigulon **":l(25,1)="Rigulon":l(26,1)="Programed by JOJO"
l(29,1)="Run With Windows":l(30,1)="Apply":l(31,1)="Cancel":l(32,1)="Secret Mode"
l(34,1)="The program will now be in secret mode. To come back to the normal mode, double-clik on the program icon and type 224 in the window"
l(35,1)="Please enter a password"
EndProcedure
Procedure menu()
CreatePopupMenu(0)
MenuTitle("")
MenuItem(#MENU_ChangePath, "")
MenuItem(#MENU_OpenPath, "")
CloseSubMenu()
MenuTitle("")
MenuItem(#MENU_1sec, "")
MenuItem(#MENU_5sec, "")
MenuItem(#MENU_10sec, "")
MenuItem(#MENU_30sec, "")
MenuBar()
MenuItem(#MENU_60sec, "")
MenuItem(#MENU_90sec, "")
MenuItem(#MENU_120sec, "")
MenuItem(#MENU_300sec, "")
MenuItem(#MENU_600sec, "")
CloseSubMenu()
MenuTitle("")
MenuItem(#MENU_Good, "")
MenuItem(#MENU_Medium, "")
MenuItem(#MENU_Low, "")
CloseSubMenu()
MenuTitle("")
MenuItem(#MENU_AutoRun, "")
MenuItem(#MENU_CancelAutoRun, "")
CloseSubMenu()
MenuItem(#MENU_Secret, "")
MenuItem(#MENU_Lan, "")
MenuItem(#MENU_About, "")
MenuItem(#MENU_Quit, "")
EndProcedure
;- ReadPreferences
CreateDirectory(pathpref)
OpenPreferences(pathpref+"prefs.yhe")
PreferenceGroup("info")
path=ReadPreferenceString("path","")
quality=ReadPreferenceFloat("quality",1.5)
seconds=ReadPreferenceLong("seconds",60)
lan=ReadPreferenceLong("lan",1)
secret=ReadPreferenceLong("secret",0)
ClosePreferences()
If path=""
path="C:\Program files\Rigulon\ScreenShot\"
CreateDirectory(path)
EndIf
;- Create Log
CreateDirectory(pathlog)
date.s=FormatDate("%yyyy-%mm-%dd",Date())
hour.s=FormatDate("%hh-%ii-%ss",Date())
namofil=pathlog+date+" "+hour+".txt"
CreateFile(0,namofil)
WriteStringN(0,date+" "+hour)
WriteStringN(0,"")
chaine.s = Space(256)
hWnd = FindWindow_( 0, 0 )
While hWnd <> 0
If GetWindowLong_(hWnd, #GWL_STYLE) & #WS_VISIBLE = #WS_VISIBLE
If GetWindowLong_(hWnd, #GWL_EXSTYLE) & #WS_EX_TOOLWINDOW <> #WS_EX_TOOLWINDOW
GetWindowText_(hWnd,@chaine,256)
If chaine <> ""
WriteStringN(0,chaine)
EndIf
EndIf
EndIf
hWnd = GetWindow_(hWnd, #GW_HWNDNEXT)
Wend
WriteStringN(0,"")
WriteStringN(0,"")
savefile(0,namofil)
;- Demarrage
texte()
menu()
OpenWindow(0, 10, 10, 10, 10, "Rigulon", #PB_Window_Invisible)
AddSysTrayIcon(1, WindowID(0),CatchImage(1, ?Icone1))
SysTrayIconToolTip(1, t(22))
lan()
thread=CreateThread(@ScreenShot(), 154)
Repeat
Event=WaitWindowEvent(1000)
;- Recuperation de la fenetre active
Handle = GetForegroundWindow_()
If Handle <> 0 And Handle <> Last_Handle
Last_Handle = Handle
WindowText.s = WMGetText(Handle)
If WindowText<>LastWindowText.s And windowtext<>""
hour.s=FormatDate("%hh-%ii-%ss",Date())
WriteStringN(0, hour+" "+ WindowText)
LastWindowText=WindowText
EndIf
EndIf
If Val(FormatDate("%ss",Date()))=00
savefile(0,namofil)
EndIf
;- gestion du mode : normal: ouvrir le menu ; secret : demander le code et revenir au mode normal
If secret=0
If Event = #PB_Event_SysTray And EventType()=#PB_EventType_LeftClick
DisplayPopupMenu(0,WindowID(0))
EndIf
ElseIf secret=1
If Event = #PB_Event_SysTray And EventType()=#PB_EventType_RightDoubleClick
code=Val(InputRequester(t(35),"",""))
If code=224
secret=0
SysTrayIconToolTip(1, t(22))
prefs("secret",secret)
EndIf
EndIf
EndIf
;- gestion du menu
If Event = #PB_Event_Menu
Select EventMenu()
Case #MENU_ChangePath
p.s=PathRequester("",path)
If p:path=p:EndIf
SetMenuTitleText(0,0,t(1)+" = "+path)
OpenPreferences(pathpref+"prefs.yhe")
PreferenceGroup("info")
WritePreferenceString("path",path)
ClosePreferences()
Case #MENU_OpenPath:If path:RunProgram(path):EndIf
Case #MENU_1sec To #MENU_1sec+8
seconds=sec(EventMenu()-#MENU_1sec+1)
SetMenuTitleText(0,1,t(27)+" = "+Str(seconds)+t(28))
prefs("seconds",seconds)
Case #MENU_Good To #MENU_Low
quality=(EventMenu()-#MENU_Good+2)
SetMenuTitleText(0,2,t(15)+" = "+t(quality+14))
prefs("quality",quality)
Case #MENU_Lan
lan=3-lan
lan()
prefs("lan",lan)
Case #MENU_About:MessageRequester(t(25),t(26)+Chr(10)+Chr(10)+t(36)+Chr(10)+t(37))
Case #MENU_Quit:quit=1
Case #MENU_AutoRun:StartWithWindows(1,"Rigulon")
Case #MENU_CancelAutoRun:StartWithWindows(2,"Rigulon")
Case #MENU_Secret
secret=1
MessageRequester(t(32),t(34))
SysTrayIconToolTip(1,"")
prefs("secret",secret)
EndSelect
EndIf
Until Quit=1
;- Data
DataSection:Icone1:IncludeBinary "tools.ico":EndDataSection