Данная функция позволяет завершить выполнение любой активной программы по её classname или заголовку окна.

Code:

procedure KillProgram(Classname : string; WindowTitle : string);

const

PROCESS_TERMINATE = $0001;

var

ProcessHandle : THandle;

ProcessID: Integer;

TheWindow : HWND;

begin

TheWindow := FindWindow(Classname, WindowTitle);

GetWindowThreadProcessID(TheWindow, @ProcessID);

ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);

TerminateProcess(ProcessHandle,4);

end;

 

 

Пример использования:

Code:

// После этого можно смотреть информация о таких системных модулях как:

//winlogon.exe и servises.exe и д.р.

EnableDebugPrivilege(True); // вкрючить

 

EnableDebugPrivilege(False); // выключить

 

Вам потребуется OpenDialog для открытия ехе-файлов и Memo для показа информации о файле.

 

Code:

Function SendString(TargetWnd, SourceWnd: THandle; N: Integer; Const S: String): Integer;

Var

CD: TCopyDataStruct;

Begin

CD.dwData := N;

CD.cbData := Length(S);

If CD.cbData = 0 Then

   CD.lpData := NIL

Else CD.lpData := @S[1];

Result := SendMessage(TargetWnd, WM_COPYDATA, SourceWnd, Integer(@CD));

End;

...

Procedure WMCopyData(Var Msg: TWMCopyData); Message WM_COPYDATA;

...

Procedure TForm1.WMCopyData(var Msg: TWMCopyData);

Var

{ Строка }

S: String;

{ Число }

N: Integer;

Begin

If (Msg.CopyDataStruct^).lpData = NIL Then S := '';

SetLength(S,Msg.CopyDataStruct^.cbData);

S := String((Msg.CopyDataStruct^).lpData);

N := (Msg.CopyDataStruct^).dwData;

End;

 

Автор: Rrader