Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Пользователь


Сообщения: 149
Благодарности: 38

Профиль | Отправить PM | Цитировать


Цитата innot20:
пока не выключишь процесс »
В смысле, чтоб процесс пользователю руками выключать надо было?
Попробуй так
читать дальше »
[code]
Код: Выделить весь код
const
    TH32CS_SNAPPROCESS = $2;
    INVALID_HANDLE_VALUE = -1;
    
type
    TPROCESSENTRY32 = record
        dwSize, cntUsage, th32ProcessID: DWORD;
        th32DefaultHeapID: Longint;
        th32ModuleID, cntThreads, th32ParentProcessID: DWORD;
        pcPriClassBase: Longint;
        dwFlags: DWORD;
        szExeFile: array [0..259] of char;
    end;

var Page:TOutputMsgWizardPage;

function CreateToolhelp32Snapshot(dwFlags, th32ProcessID: DWORD): THandle; external 'CreateToolhelp32Snapshot@kernel32.dll stdcall';
function Process32First(hSnapshot: THandle; var lppe: TPROCESSENTRY32): Boolean; external 'Process32First@kernel32.dll stdcall';
function Process32Next(hSnapshot: THandle; var lppe: TPROCESSENTRY32): Boolean; external 'Process32Next@kernel32.dll stdcall';
function CloseHandle(hObject: THandle): Boolean; external 'CloseHandle@kernel32.dll stdcall';


function IsProcessRunning(FileName: String): Boolean; //FileName - имя exe-файла процесса
var
    hProcessSnap: THandle;
    pe32: TPROCESSENTRY32;
    szExeFile: String;
begin
    hProcessSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if hProcessSnap = INVALID_HANDLE_VALUE then Exit;
    pe32.dwSize := sizeof(pe32);
    if not Process32First(hProcessSnap, pe32) then Exit;
    while not Result and Process32Next(hProcessSnap, pe32) do
    begin
        szExeFile := '';
        while not (pe32.szExeFile[Length(szExeFile)] = #0) do szExeFile := szExeFile + pe32.szExeFile[Length(szExeFile)];
        Result := LowerCase(FileName) = LowerCase(szExeFile);
    end;
    CloseHandle(hProcessSnap);
end;


procedure InitializeWizard;
begin
 Page:=CreateOutputMsgPage(wpSelectComponents, "Внимание", "Игра WorldOfTanks запущена", "Игра WorldOfTanks запущена. Закройте, чтобы продолжить установку");
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  if (CurPageID= Page.id) then
   begin
    if IsProcessRunning('WorldOfTanks.exe') then
     result:=false
    else
     result:=true;
   end
  else
   result:=true;
end;

Отправлено: 17:58, 27-01-2014 | #2000