![]() |
Re: Programm durch Delphi Programm beenden?
Hi,
wäre ne idee aber ich hätte es gerne im Source drin. danke |
Re: Programm durch Delphi Programm beenden?
Naja, es gibt Programme, die sich nicht so einfach abschießen lassen, weil
- sie sich schützen - man nicht genügend Rechte hat Nur wenn beides nicht zutrifft, liegt es am Code. |
Re: Programm durch Delphi Programm beenden?
Hallo,
Ich habe es mittlerweile per Enumprocess hinbekommen.
Delphi-Quellcode:
PS: Ich hatte oder habe alle Rechte für das PRogramm,weil es ja auch von mir kommt,nur zum updaten muss i es zu machen,weil das 1. programm das 2. staret und das 2. das 1. updatet *GG*
uses PsApi;
function TerminateEXE(sFile: string): Bool; var verSystem: TOSVersionInfo; hdlSnap,hdlProcess: THandle; bPath,bLoop: Bool; peEntry: TProcessEntry32; arrPid: array [0..1023] of DWord; iC: DWord; i,iCount: Integer; arrModul: array [0..299] of Char; hdlModul: HMODULE; begin result:=false; if ExtractFileName(sFile)=sFile then bPath:=false else bPath:=true; verSystem.dwOSVersionInfoSize:=SizeOf(TOSVersionInfo); GetVersionEx(verSystem); if verSystem.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS then begin hdlSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); peEntry.dwSize:=Sizeof(peEntry); bLoop:=Process32First(hdlSnap,peEntry); while integer(bLoop)<>0 do begin if bPath then begin if CompareText(peEntry.szExeFile,sFile)=0 then begin TerminateProcess(OpenProcess(PROCESS_TERMINATE,false,peEntry.th32ProcessID),0); result:=true; end; end else begin if CompareText(ExtractFileName(peEntry.szExeFile),sFile)=0 then begin TerminateProcess(OpenProcess(PROCESS_TERMINATE,false,peEntry.th32ProcessID),0); result:=true; end; end; bLoop:=Process32Next(hdlSnap,peEntry); end; CloseHandle(hdlSnap); end else if verSystem.dwPlatformId=VER_PLATFORM_WIN32_NT then begin EnumProcesses(@arrPid,SizeOf(arrPid),iC); iCount:=iC div SizeOf(DWORD); for i:=0 to Pred(iCount) do begin hdlProcess:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,false,arrPid[i]); if (hdlProcess<>0) then begin EnumProcessModules(hdlProcess,@hdlModul,SizeOf(hdlModul),iC); GetModuleFilenameEx(hdlProcess,hdlModul,arrModul,SizeOf(arrModul)); if bPath then begin if CompareText(arrModul,sFile)=0 then begin TerminateProcess(OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,False,arrPid[i]), 0); result:=true; end; end else begin if CompareText(ExtractFileName(arrModul),sFile)=0 then begin TerminateProcess(OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,False,arrPid[i]), 0); result:=true; end; end; CloseHandle(hdlProcess); end; end; end; end; danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz