Autor Beitrag
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Di 26.04.05 21:31 
ausblenden volle Höhe Delphi-Quelltext
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:
function KillProcess(pid: integer): boolean; register;
var procHnd: THandle;
begin
  result := false;
  if pID <> 0 then begin
    asm
       //push DWORD PTR[PID]
       push EAX
       push 0
       push 1
       CALL OpenProcess
       MOV ESI, EAX
       TEST ESI, ESI
       JE @fehler
       PUSH 1
       PUSH ESI
       Call TerminateProcess
       TEST EAX, EAX
       JNZ @success
       @fehler:
       MOV DWORD PTR[result], 0
       jmp @final
//       CALL GetLastError
//       PUSH EAX
//       CALL SysErrorMessage
       @success:
       MOV DWORD PTR[result], 1
       @final:
       PUSH ESI
       CALL closehandle
    endend
{    procHnd := OpenProcess(1, False, pID);
    if procHnd <> 0 then  begin
       result:= TerminateProcess(procHnd, 1);
    CloseHandle(ProcHnd);
    end;
  end; }

end;

wenn ich obigen assemblercode ausführe, bleibt kurz danach das system mit einer fehlermeldung stehen. führe ich hingegen den auskommentierten pascalcode aus, funktioniert alles reibungslos.
hat jemand ne idee weswegen ?

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Di 26.04.05 21:38 
habs nicht getestet aber speicher mal ESI ab

mit PUSH ESI und am schluss wieder POP ESI, oder benutz es erst gar nicht (brauchst eigentlich nicht)

deseiteren sprich result direkt an über

mov result, 0

nicht mit []

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
retnyg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Di 26.04.05 21:42 
danke, es lag an dem result ^^
btw die funktion habe ich so aus dem windows taskmanager geklaut. mit den einstellungen bleibt die explorer.exe gekillt, startet sich also nicht von selber wieder so wie bei allen code-schnippseln, die da im web rumschwirrn

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...