убить винрар из делфи

Тема в разделе "Delphi - FAQ", создана пользователем vs_delphi, 23 окт 2005.

Статус темы:
Закрыта.
  1. vs_delphi

    vs_delphi Гость

    помогите плс!!! очень срочно нужно!!!

    есть winrar-sfx файл
    1. в run before extraction есть маленькая делфийская программка, проверяет наличие файлов на диске, версию виндоуса и т.д.
    2. потом работает сам эктрактор винрара
    3. в run after extraction окончательная довода и запуск установленной задачи при наличии птицы в чекбоксе.
    вопрос: можно ли убить винрар в п.1 по моему условию, например: по наличию файла на диске или не совместимости версии виндоуса.
    т.е. не дать винрару вовсе запуститься по условию и разумеется в этом случае убить третий пункт.
    собственно, если винрар будет убит, скорей всего п.3 не не будет запущен.
    в раровских скриптах не нашел ничего для самоубийства

    заранее сенкс!!!!

    p.s.
    delphi 7
    winrar 3.51
     
  2. zubr

    zubr Гость

    Можно попробовать такой вариант:
    1. Твоя программка определяет список процессов в системе.
    2. Сопостовляет хэндлы процессов с именами исполняемого файла.
    3. Когда находит хэндл процесса винрара делает ему TerminateProcess.
     
  3. vs_delphi

    vs_delphi Гость

    если есть маленький готовый пример поделись плс!!!
     
  4. zubr

    zubr Гость

    Код (Text):
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
     Psapi;

    type
    TForm1 = class(TForm)
     procedure FormCreate(Sender: TObject);
    private
     { Private declarations }
    public
     { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    function WinNTProcess(put:string):boolean;
    var
    PIDArray: array [0..1023] of DWORD;
    cb: DWORD;
    I: Integer;
    ProcCount: Integer;
    hMod: HMODULE;
    hProcess: THandle;
    ModuleName: array [0..300] of Char;
    s:string;
    begin
    Result:=False;
    EnumProcesses(@PIDArray, SizeOf(PIDArray), cb);
    ProcCount := cb div SizeOf(DWORD);
    for I := 0 to ProcCount - 1 do
    begin
     hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, PIDArray[I]);
     if (hProcess <> 0) then
     begin
     EnumProcessModules(hProcess, @hMod, SizeOf(hMod), cb);
     FillChar(ModuleName, 300, #0);
     GetModuleFilenameEx(hProcess, hMod, ModuleName, SizeOf(ModuleName));
     s:=string(ModuleName);
     s:=ExtractFileName(s);
     If CompareText(s, put)=0 then
     begin
      TerminateProcess(hProcess, 0);
      Result:=True;
      ShowMessage('WinRar terminated');
      exit;
     end;
     CloseHandle(hProcess);
     end;
    end;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    If WinNTProcess('Project1.sfx.exe') then
    Application.Terminate;
    end;

    end.
    З.Ы. Только для NT-систем.
     
  5. Poseidon

    Poseidon Гость

    Код (Text):
    uses
    Tlhelp32, Windows, SysUtils;

    function KillTask(ExeFileName: string): integer;
    const
    PROCESS_TERMINATE=$0001;
    var
    ContinueLoop: BOOL;
    FSnapshotHandle: THandle;
    FProcessEntry32: TProcessEntry32;
    begin
    result := 0;

    FSnapshotHandle := CreateToolhelp32Snapshot
              (TH32CS_SNAPPROCESS, 0);
    FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
    ContinueLoop := Process32First(FSnapshotHandle,
                    FProcessEntry32);

    while integer(ContinueLoop) <> 0 do
    begin
     if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
        UpperCase(ExeFileName))
      or (UpperCase(FProcessEntry32.szExeFile) =
        UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(OpenProcess(
               PROCESS_TERMINATE, BOOL(0),
               FProcessEntry32.th32ProcessID), 0));
     ContinueLoop := Process32Next(FSnapshotHandle,
                    FProcessEntry32);
    end;

    CloseHandle(FSnapshotHandle);
    end;
    В ExeFileName передаешь имя твоего файла-архива (что бы закрыть именно его).
     
Загрузка...
Похожие Темы - убить винрар из
  1. Triton
    Ответов:
    8
    Просмотров:
    700
  2. savl
    Ответов:
    0
    Просмотров:
    1.439
  3. ToxaRat
    Ответов:
    0
    Просмотров:
    1.431
  4. Dragon108
    Ответов:
    11
    Просмотров:
    4.292
  5. yerke
    Ответов:
    5
    Просмотров:
    5.542
Статус темы:
Закрыта.

Поделиться этой страницей