DevilMan Posted September 12, 2011 Report Share Posted September 12, 2011 Eu terminei esse aplicativo; porém quando eu fecho ele o processo ainda fica aberto:Gostaria de saber como programar para o processo fechar assim que o programa é fechado.Grato. Quote Link to comment Share on other sites More sharing options...
0 Jhonas Posted September 12, 2011 Report Share Posted September 12, 2011 Pesquise no forum por Kill Processhttp://scriptbrasil.com.br/forum/index.php...te=kill+processabraço Quote Link to comment Share on other sites More sharing options...
0 Douglas Soares Posted September 14, 2011 Report Share Posted September 14, 2011 Ou se quer algo "mastigado" segue abaixo:Quando fecho um aplicativo meu que é meio "teimoso" eu sempre adiciono isso ao código do fechamento:try Application.Terminate; except end; if not TerminarProcesso('CODES MALDITO WT.exe') then WinExec('cmd /c taskkill -f -im CODES MALDITO WT.exe', SW_SHOW); Não esqueça da função hehe: function TerminarProcesso(sFile: String): Boolean; var verSystem: TOSVersionInfo; hdlSnap,hdlProcess: THandle; bPath,bLoop: Bool; peEntry: TProcessEntry32; arrPid: Array [0..1023] of DWORD; iC: DWord; k,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 k := 0 to Pred(iCount) do begin hdlProcess:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,false,arrPid [k]); 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 [k]), 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 [k]), 0); Result := True; end; end; CloseHandle(hdlProcess); end; end; end; end;Valeu! Quote Link to comment Share on other sites More sharing options...
Question
DevilMan
Eu terminei esse aplicativo; porém quando eu fecho ele o processo ainda fica aberto:
Gostaria de saber como programar para o processo fechar assim que o programa é fechado.
Grato.
Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.