Возникли следующие проблемы.
Вот проект: http://webfile.ru/4325292. А это его код:
- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, LResources, FileUtil;
type
{ TForm2 }
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form2: TForm2;
implementation
procedure TForm2.Button1Click(Sender: TObject);
var
H : HWND; // ссылка на окно
begin
H := FindWindow (nil, 'Form1'); // ищем окно
// H := FindWindow ('TForm1', 'Form1'); // ищем окно
// H := FindWindow (PChar(UTF8ToSys('TForm1')), 'Form1');
If H <> 0 then ShowMessage ('Есть Form1! Значение H=' + floattostr(h)) // окно найдено
else ShowMessage ('Нет Form1! Значение H='+ floattostr(h)); // окно не найдено
end;
initialization
{$I unit1.lrs}
end.
Открываю Lazarus жму F9. Создается форма с с Caption равным Form1.
Код этой "формы"
- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs;
type
TForm1 = class(TForm)
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
initialization
{$I unit1.lrs}
end.
Запускаю свой проект.
У меня он находит форму с надписью Form1 только при первой красной строке.
H := FindWindow (nil, 'Form1'); // ищем окно
// H := FindWindow ('TForm1', 'Form1'); // ищем окно
// H := FindWindow (PChar(UTF8ToSys('TForm1')), 'Form1');
Аргументы функции - класс окна и его заголовок
Т.е. параметр класса я ставлю без разницы какой (nil).
- Код: Выделить всё
H := FindWindow (nil, 'Form1');
В книге же работает 2 строка,
выделенная красным цветом. у меня же только первая с параметром nil почему? что почитать? Как узнать к какому классу относиться эта Form1?
третья красная тоже не работает Не находят окно с надписью Form1 .