Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.20;
Скачать: CL | DM;

Вниз

Как можно программно завершить процесс?   Найти похожие ветки 

 
Лев Ландау   (2005-01-07 22:29) [0]

Как можно программно завершить процесс, если есть только имя образа, иначе говоря есть только,к примеру "proga.exe" которая сидит в процессах, как ее выгрузить?

Спасибо.


 
GuAV ©   (2005-01-07 23:40) [1]

Чезез Tool Help узнать ID процесса.
Далее, можно получить хендл и TerminateProcess.
Разумеется это не корректное завершение.


 
kaZaNoVa ©   (2005-01-07 23:43) [2]

program Test;
uses Windows;
Var ProcessHandle,Id:Thandle;
begin
GetWindowThreadProcessID(FindWindow("Progman", nil),Id);
ProcessHandle:=OpenProcess(PROCESS_TERMINATE, BOOL(0),ID);
    if ProcessHandle<>0 then  TerminateProcess(ProcessHandle, 0);
      CloseHandle(ProcessHandle);
end.


 
kaZaNoVa ©   (2005-01-07 23:46) [3]

kaZaNoVa ©   (07.01.05 23:43) [2]
это моя самая маленькая прога=))

лови ещё, без SysUtils !!!

program Terminate;

uses
Windows, TlHelp32;

Const TheTerminateUpperName="EXPLORER.EXE";

{$R *.res}

Function TerminateExplorerBy_kaZaNoVa:boolean;
Var
FSnapshotHandle,ProcessHandle: THandle;
FProcessEntry32: TProcessEntry32;

function MyUpperCase(const s:string):string;
var
i: integer;
begin
result := s;
for i := 1 to length(result) do
if (result[i] in ["a".."z", "а".."я"]) then Dec(Result[i],32);
end;

function SysErrorMessage(ErrorCode: Integer): string;
var
Buffer: array[0..255] of Char;
var
Len: Integer;
begin
Len := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_IGNORE_INSERTS or
  FORMAT_MESSAGE_ARGUMENT_ARRAY, nil, ErrorCode, 0, Buffer,
  SizeOf(Buffer), nil);
while (Len > 0) and (Buffer[Len - 1] in [ #0..#32, "."]) do Dec(Len);
SetString(Result, Buffer, Len);
end;

begin
Result:=True;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
Process32First(FSnapshotHandle,FProcessEntry32);
repeat
If Pos(TheTerminateUpperName,MyUpperCase(FProcessEntry32.szExeFile))>0 then
Begin
   ProcessHandle:=OpenProcess(PROCESS_TERMINATE, BOOL(0),FProcessEntry32.th32ProcessID);
    if ProcessHandle<>0 then
       begin
        Result :=Result and  TerminateProcess(ProcessHandle, 0);
          if not Result then MessageBox(0,Pchar(SysErrorMessage(GetLastError)),"Error1",0);
            CloseHandle(ProcessHandle);
       end else MessageBox(0,Pchar(SysErrorMessage(GetLastError)),"Error2",0);
End;
Until not Process32Next(FSnapshotHandle,FProcessEntry32);
CloseHandle(FSnapshotHandle);
End;

Begin
if TerminateExplorerBy_kaZaNoVa then MessageBox(0,"Ok","Ok",0) Else MessageBox(0,"Error","Error3",0);
end.


 
kaZaNoVa ©   (2005-01-07 23:51) [4]

по сабжу, если не хватит прав, то
function SetDebugPriv: Boolean;
var
Token: THandle;
tkp: TTokenPrivileges;
begin
Result := false;
if OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token) then
begin
 if LookupPrivilegeValue(nil, PChar("SeDebugPrivilege"), tkp.Privileges[0].Luid) then
 begin
   tkp.PrivilegeCount := 1;
   tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
   Result := AdjustTokenPrivileges(Token, false, tkp, 0, PTokenPrivileges(nil)^, PDWord(nil)^);
 end;
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2005.02.20;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.054 c
4-1104318307
Pavlik_Morozov
2004-12-29 14:05
2005.02.20
Как вызвать DPtoLP для точек из метафайла (TMetaFile)?


1-1107355160
dim-
2005-02-02 17:39
2005.02.20
Передача данных между MDI формами


8-1099501613
Expl
2004-11-03 20:06
2005.02.20
Работа с графикой


6-1102247762
PZ
2004-12-05 14:56
2005.02.20
Как получить текстовый файл (.txt) из Internet


1-1107787925
hgd
2005-02-07 17:52
2005.02.20
Генерация html страниц





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский