Засада в файле проекта...

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

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

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

Засада в файле проекта...

Сообщение qivi »

Перехожу с версии лазаруса .....26 на версию ......27, нижеследующий код работал у меня в делфи и в лазарусе версии ......26, в версии .....27 не работает:

Код: Выделить всё

program myprogramm;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces,windows, Forms, gf, LResources, zastavka;

Const NamedMutex='myprogramm_PROGRAMMI'; // Описание мьютекса программы
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 universal_slovar.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;
  {$I universal_slovar.lrs}
  Application.Initialize;
  zastava := Tzastava.Create(Application);
  zastava.Show;
  zastava.Update;
  while zastava.timerzastava.Enabled do Application.ProcessMessages;
  zastava.Hide;
  zastava.Free;
  Application.CreateForm(Tmyprogramm, myprogramm);
  Application.Run;
  end;
end.


В том плане что приложение всё равно запускается дважды...
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

qivi писал(а):

Код: Выделить всё

WND:=Findwindow(nil,'Моя программа');

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

Сообщение qivi »

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

Сообщение qivi »

Граждане форумчане, ну неужеле никто не решал эту проблемму?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Тебе же написали, что проблемма с UTF-8!
Функции WinAPI вообще с UTF-8 не работают!

Код: Выделить всё

WND:=FindWindow(nil,UTF8ToSys('Моя программа'));
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

qivi писал(а):Граждане форумчане, ну неужеле никто не решал эту проблемму?

Граждане форумчане уже разъясняли эту проблему ни одну сотню раз. Просто отдельные граждане ленятся пользоваться поиском.
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

Vadim, компилятор пишет на предложенную тобой строку "Error: Incompatible type for arg no. 2: Got "AnsiString", expected "PChar""

Если вопрос уже разобран, дай пожалуйста ссылочку на тему... не нашол...
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

ммм да

Код: Выделить всё

WND:=FindWindow(nil,PChar(UTF8ToSys('Моя программа')));

...а простейшие собщения компилятора читать то мы неумеем...
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

Да нет просто не знал что это такое... :oops:
Ответить