Тема: 2 юнита
Показать сообщение отдельно
  #4  
Старый 11.12.2012, 00:08
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

И что в этом сложного?
Код:
unit Unit1;
 
interface
 
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, tlhelp32, ExtCtrls, StdCtrls;
 
type
 TForm1 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
 
 private
   { Private declarations }
 public
   { Public declarations }
 end;
 
var
  Form1: TForm1;
  showed:boolean=false;
 
implementation
 
{$R *.dfm}
 
function ProcessExists(const exeFileName: string): Boolean;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  Result := False;
  while Integer(ContinueLoop) <> 0 do
  begin
  if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
    UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
  begin
    Result := True;
  end;
  ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
  CloseHandle(FSnapshotHandle);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.ShowMainForm := False;
  Form2.Visible := True;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if ProcessExists('game.exe') then
  begin
    if Showed = False then
    begin
      Showed := True;
      ShowMessage('Процесс запущен. Открываем второй юнит.');
      Form2.ShowModal
    end;
  end
  else 
    if Showed then 
    begin
      Showed := False;
      ShowMessage('Процесс отсутствует. Закрываем второй юнит.');
      Form2.Close
    end
end; 
end.
Form2 - это форма игры.
Чтобы игру начинать при вызове окна, производите действия на OnShow.
Ответить с цитированием