FM中的FindWindow

时间:2015-11-25 16:59:46

标签: delphi findwindow

我想在FM中使用findwindow api调用,我可以在VCL应用程序中使用它,但不能使用FM。

这是我的代码

    function WindowExists(titlename: string): boolean;
    var
      hwd: THandle;
    begin
      hwd := 0;
      hwd := FindWindow(nil, pchar(titlename));
      Result := False;
      if not(hwd = 0) then { window was found if not nil }
       Result := True;
   end;

这是我尝试编译时遇到的错误 [dcc32错误] global_proc.pas(62):E2010不兼容的类型:'HWND'和'指针'

我做错了什么?

1 个答案:

答案 0 :(得分:3)

您的问题似乎是您的代码找到了FMX.Platform.Win.FindWindow而不是Winapi.Windows.FindWindow。此外,FindWindow会返回HWND而不是THandle

您的代码应该是这样的:

function WindowExists(const TitleName: string): Boolean;
var
  wnd: HWND;
begin
  wnd := Winapi.Windows.FindWindow(nil, PChar(TitleName));
  Result := wnd <> 0;
end;

甚至

function WindowExists(const TitleName: string): Boolean;
begin
  Result := Winapi.Windows.FindWindow(nil, PChar(TitleName)) <> 0;
end;

请注意,编写这样的代码总是没有意义的:

A := 0;
A := 1;

这就是你的代码本质上在函数的前两行中所做的。使用不等于运算符<>而不是否定相等运算符也是惯用的。