Hallo,
ich bin dabei ein Tool zu programmieren, dass verschiedene System-Informationen und Funktionen des PC's zeigen bzw. demonstrieren soll. Darunter soll auch eine Demonstration sein, um Programme vor dem Taskmanager zu verstecken und wieder anzuzeigen. Mit der untenstehenden Anweisung ("RegisterServiceProcess") wird in Windows die Funktion RegisterServiceProcess aus der Datei KERNEL32.DLL importiert. Natürlich funktioniert dies in WIN9.X ohne Probleme. Aber ab WINNT gibt es nicht mehr die Prozedur "RegisterServiceProcess" in der Datei "KERNEL32.DLL" und somit erscheint beim Start eine Fehlermeldung ("Der Prozedureinsprungpunkt "RegisterServiceProcess" wurde nicht gefunden."), die ich auch mit einer "try...except...end" - Anweisung nicht unterbinden kann.
Nun, dachte ich mir eine Abfrage ("CheckWindows") einzubauen, um zu überprüfen, welches Betriebssystem genutzt wird. Wenn das Betriebssystem WIN9.x genutzt wird, soll die Function "RegisterServiceProcess" aufgerufen werden, ansonsten nicht.
Doch die Fehlermeldung (ab WINNT) erscheint weiterhin, da die Initialisierung, egal ob sie im Programm genutzt wird oder nicht, so oder so durchgeführt wird.
Gibt es eine Möglichkeit, die erscheinende Fehlermeldung trotzdem nicht anzeigen zu lassen?
Bye
Crowbar
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| ... implementation function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external 'KERNEL32.DLL'; ...
Procedure TForm1.Button1Click(Sender: TObject); begin if CheckWindows then RegisterServiceProcess(GetCurrentProcessID,1); ... end;
Procedure TForm1.Button2Click(Sender: TObject); begin if CheckWindows then RegisterServiceProcess(GetCurrentProcessID,0); ... end; |
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.