Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Вниз

Процесс   Найти похожие ветки 

 
hamster ©   (2004-11-05 20:17) [0]

Здравствуйте. Как программно завершить процесс, зная его имя?


 
Defunct ©   (2004-11-05 20:59) [1]

Завершить - treminate
Процесс - process

имеем:
TerminateProcess F1


 
kaZaNoVa ©   (2004-11-05 21:22) [2]

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.


 
OSokin ©   (2004-11-05 21:23) [3]

wfc:=findwindow(wndname);
SendMessage(wfc,WM_CLOSE,0,0);

Но это только для закрытия окна. Впрочем, может пригодиться для закрытия окнных приложений


 
hamster ©   (2004-11-06 18:41) [4]

Спасибо за помощь.



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

Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
14-1101886371
AlexG
2004-12-01 10:32
2004.12.19
Что скажете? Покупать его за 5000р.?


14-1101575378
Petia
2004-11-27 20:09
2004.12.19
Анкета


14-1101902473
margel
2004-12-01 15:01
2004.12.19
Люди! Как писать DVD, "+" или "-"???


3-1100427250
integer
2004-11-14 13:14
2004.12.19
помогите з запросом


1-1102326103
jiran
2004-12-06 12:41
2004.12.19
Помогите перевести с с++ на Delphi вызов функции из dll !





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский