情况:全局原子表中有一个字符串与我的应用程序相同。我的应用程序没有创建应用程序句柄,我得到一个无效的窗口句柄。
FMX.Platform.Win 中的代码
procedure TPlatformWin.CreateAppHandle;
var
//...
begin
//...
AtomName := ModuleName;
AppAtom := GlobalFindAtom(PChar(AtomName));
if AppAtom > 0 then begin
FApplicationHWND := 0; // FApplicationHWND = 0 and I get "invalid window handle"
end else begin
// FApplicationHWND is created
我有一个旧应用程序,其中 exe 具有相同的名称。关闭后,它会在 globalatomtable 'COM' 中留下一个字符串。关闭这个旧应用程序后。我无法再打开新应用程序,因为它一直在 gloabal atom 表中找到这个“COM”,导致应用程序句柄和窗口句柄无效。
如果我将代码放在注释中,则应用程序将以有效的应用程序句柄完美启动。
// AtomName := ModuleName;
// AppAtom := GlobalFindAtom(PChar(AtomName));
// if AppAtom > 0 then begin
// FApplicationHWND := 0;
// end else