delphi77
دوشنبه 10 اسفند 1383, 07:52 صبح
درود بر همه شما جویندگان دانش
از توجه شما نسبت به این موضوع سپاس گزارم
چطور به محض اینکه برنامه خاصی (مورد نظر) اجرا شد آن را شناسایی و End Task کنم؟ :گیج:
------------------------------------------------------------------------------------------------
من تاج نمی خواهم من تخت نمی خواهم
در خدمتت افتادن بر روی زمین خواهم
Touska
دوشنبه 10 اسفند 1383, 14:15 عصر
با استفاده از این رویداد که در فرم خود تعریف
می کنید .
procedure TMainForm1.KillProcess(ApplicationName: String);
Var
aSnapshotHandle : THandle;
aProcessEntry32 : TProcessEntry32;
ListView1 : TListView;
I : Integer;
bContinue : BOOL; //Kill Proccess IF Running
NewItem : TListItem;
Ret: BOOL;
PrID: Integer; // processidentifier
Ph: THandle; // processhandle
begin
With DataTable1 Do
Begin
IF Not TableUsers.IsEmpty Then TableUsers.EmptyTable;
IF Not TableOnline.IsEmpty Then TableOnline.EmptyTable;
End;
Try
ListView1 := TListView.Create(Self);
ListView1.Parent := MainForm1;
ListView1.Items.Clear;
aSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
aProcessEntry32.dwSize := SizeOf(aProcessEntry32);
bContinue := Process32First(aSnapshotHandle, aProcessEntry32);
while Integer(bContinue) <> 0 do
begin
NewItem := ListView1.Items.Add;
NewItem.Caption := ExtractFileName(aProcessEntry32.szExeFile);
NewItem.subItems.Add(IntToHex(aProcessEntry32.th32 ProcessID, 4));
NewItem.subItems.Add(aProcessEntry32.szExeFile);
bContinue := Process32Next(aSnapshotHandle, aProcessEntry32);
end;
CloseHandle(aSnapshotHandle);
With ListView1 Do
Begin
For I := 0 To Items.Count - 1 Do
Begin
IF Items.Item[I].Caption = ApplicationName Then
Begin
PrID := StrToInt('$' + Items.Item[I].SubItems[0]);
Ph := OpenProcess(1, BOOL(0), PrID);
Ret := TerminateProcess(Ph, 0);
IF Integer(Ret) = 0 Then
MessageDlg('Cannot terminate "' + Items.Item[I].Caption + '"',
mtInformation, [mbOK], 0)
Else
Items.Item[I].Delete;
Break;
End;
End;
End;
ListView1.Free;
Except
MessageDlg('Cannot close this program',mtError,[mbok],0);
End;
end;
موفق باشید :موفق:
delphi77
دوشنبه 10 اسفند 1383, 16:07 عصر
TProcessEntry32
نمیشناسه
houshmand
دوشنبه 10 اسفند 1383, 19:16 عصر
میتوانی با تابع api findwindow شماره هندل برنامه مورد نظر را بدست بیاوری اگر دارای مقداری جز صفر بود با kill کردن آن را ببندی
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.