gpt4 book ai didi

delphi - FM 中的 FindWindow

转载 作者:行者123 更新时间:2023-12-01 16:24:55 25 4
gpt4 key购买 nike

我正在尝试在 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' 和 'Pointer'

我做错了什么?

最佳答案

您的问题可能是您的代码正在查找 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;

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

关于delphi - FM 中的 FindWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33922301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com