我想在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'和'指针'
我做错了什么?
答案 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;
这就是你的代码本质上在函数的前两行中所做的。使用不等于运算符<>
而不是否定相等运算符也是惯用的。