- Код: Выделить всё
program QWER;
uses
Forms,
windows,
QWER in 'QWER.pas' {Voshod},
Zastavka in 'Zastavka.pas' {Zastava},
Const NamedMutex='QWER'; // Описание моего мьютекса
Var WND:HWND;
Function CheckInstance(Name: PChar): Integer;
Var Mutex:Integer;
Begin
Mutex:=CreateMutex(nil,True,Name);
IF GetLastError<>0 then Result:=0 else Result:=Mutex;
ReleaseMutex(Mutex);
End;
{$R *.res}
begin
With Application Do
Begin
IF CheckInstance(NamedMutex)=0 then
{Если наш мьютекс уже найден в системе}
Begin
{Находим окно объекта TApplication}
WND:=Findwindow(nil,'БЛА БЛА БЛА');
IF WND<>0 then
Begin
{Восстанавливаем его}
ShowWindow(WND,SW_RESTORE);
{Устанавливаем в качестве переднего окна}
SetForeGroundWindow(Wnd);
{Выходим из программы, не запускем её}
Exit;
End;
End;
Title:='БЛА БЛА БЛА';
Initialize;
Application.Initialize;
Zastava := TZastava.Create(Application);
Zastava.Show;
Zastava.Update;
while Zastava.TimerZastava.Enabled do Application.ProcessMessages;
Zastava.Hide;
Zastava.Free;
Application.CreateForm(TQWER, QWER);
end;
end.
Вот так я его перенёс в файл проекта лазарус:
- Код: Выделить всё
program QWER;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms
{ you can add units after this }, QWER, zastavka;
Const NamedMutex='QWER';
Var WND:HWND;
Function CheckInstance(Name: PChar): Integer;
Var Mutex:Integer;
Begin
Mutex:=CreateMutex(nil,True,Name);
IF GetLastError<>0 then Result:=0 else Result:=Mutex;
ReleaseMutex(Mutex);
End;
{$IFDEF WINDOWS}{$R manifest.rc}{$ENDIF}
begin
With Application Do
Begin
IF CheckInstance(NamedMutex)=0 then
{Если наш мьютекс уже найден в системе}
Begin
{Находим окно объекта TApplication}
WND:=Findwindow(nil,'БЛА БЛА БЛА');
IF WND<>0 then
Begin
{Восстанавливаем его}
ShowWindow(WND,SW_RESTORE);
{Устанавливаем в качестве переднего окна}
SetForeGroundWindow(Wnd);
{Выходим из программы, не запускем её}
Exit;
End;
End;
Title:='БЛА БЛА БЛА';
Initialize;
Application.Initialize;
zastava := Tzastava.Create(Application);
zastava.Show;
zastava.Update;
while zastava.timerzastava.Enabled do Application.ProcessMessages;
zastava.Hide;
zastava.Free;
Application.CreateForm(TQWER, QWER);
Application.Run;
end;
end.
Жалуется на строку:
- Код: Выделить всё
Var WND:HWND;
Ну и как следствие на все последующие с этой переменной!!!
Что делать?