Проблемка с проверкой запуска приложения

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Проблемка с проверкой запуска приложения

Сообщение qivi » 21.01.2009 18:39:53

Вот примерно так выглядел код файла проекта в Делфи который призван проверять а небылали данная программа уже запущенна:
Код: Выделить всё
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;


Ну и как следствие на все последующие с этой переменной!!!

Что делать?
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Проблемка с проверкой запуска приложения

Сообщение Mr.Smart » 21.01.2009 18:43:46

Внимательней нужно смотреть!
А где подключение модуля Windows?
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Проблемка с проверкой запуска приложения

Сообщение serg_iv » 21.01.2009 18:48:51

Возможно дело в неподключенном модуле windows в нижнем варианте.
Попробуй добавить в uses'ах.
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: Проблемка с проверкой запуска приложения

Сообщение Mr.Smart » 21.01.2009 18:52:00

serg_iv писал(а):Возможно дело в неподключенном модуле windows в нижнем варианте.
Попробуй добавить в uses'ах.

Объясняю тип HWND описан в модуле Windows. отсюда вывод: необхотимо подключить модуль Windows...
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Проблемка с проверкой запуска приложения

Сообщение qivi » 21.01.2009 19:20:48

Спасибо!!! Заработало!!!
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 42

Рейтинг@Mail.ru