windows – 如何找到阻止关机的HWND?
我的应用程序中的某个地方(以及第三方代码库)是一个阻止
Windows的窗口过程:
>退出 我在我的代码中找到了一个位置,我在调用DefWindowProc时犯了一个非常常见的错误,但调用错误: FBroadcastListenerHwnd := AllocateHWnd(BroadcastListenerWindowProc); procedure TGrobber.BroadcastListenerWindowProc(var msg: TMessage); begin DefWindowProc(FBroadcastListenerHwnd,msg.msg,msg.wparam,msg.lparam); end; 我修复了那个bug,而我的test program不再停止关机了. 但完整的应用程序 我现在面临着不得不撕掉一个程序,直到我的计算机终于重新启动. 在我的应用程序内部的某个地方是一个附加到HWND的Window过程,它返回零到 但我怎么能找到那个人呢? Windows应用程序事件日志记录了停止关闭的过程: 并且在更详细的应用程序和服务日志中有更详细的日志.但那些没有证件. 我怎样才能找到有问题的hwnd? 尝试 我尝试使用EnumThreadWindows来获取我的“主”线程的所有窗口,并想要手动向它们发送WM_QUERYENDSESSION以查看谁返回false: var wnds: TList<HWND>; function DoFindWindow(Window: HWnd; Param: LPARAM): Bool; stdcall; var wnds: TList<HWND>; begin wnds := TList<HWND>(Param); wnds.Add(Window); Result := True; end; wnds := TList<HWND>.Create; enumProc := @DoFindWindow; EnumThreadWindows(GetCurrentThreadId,EnumProc,LPARAM(wnds)); 现在我列出了12个hwnds.戳他们: var window: HWND; res: LRESULT; for window in wnds do begin res := SendMessage(window,WM_QUERYENDSESSION,0); if res = 0 then begin ShowMessage('Window: '+IntToHex(window,8)+' returned false to WM_QUERYENDSESSION'); end; end; 但没有人确实归零. 所以这是排水管的一个管.
EnumThreadWindows只枚举一个特定线程的窗口.可能是在一个线程中创建了违规窗口.因此,我建议您使用EnumWindows在您的应用程序中枚举所有顶级窗口以进行测试.
它足以在一个线程中初始化COM,你将拥有一个你不知道的窗口.这样在线程中调用WaitForSingleObject可能是你的罪魁祸首: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- compiler-errors – 错误:DEP0500
- windows-server-2008 – Windows系统管理员,要知道的事情?
- 在Windows上创建Python 3.3.4和virtualenv:ImportError:没
- 无法使用Tesseract 3.0.2.02存档为WIndows编译Tesseract AP
- windows – 指向Samba共享目录的HTML链接,适用于Internet E
- windows-phone-7 – 无尽的枢轴控制
- 是否可以使用Windows命令行编辑二进制文件?
- 部署 – 如何使用Pharo或Squeak部署一个漂亮的One-Window-A
- 安装程序 – 我需要一个安装我的软件和先决条件的WIX Boots
- 将键盘事件发送到不处理Windows事件的C#中的另一个应用程序
- 32位DLL加载64位依赖?
- Task Scheduler如何在Windows 7上保存密码?
- 用于在Windows上进行符号链接转换的Git挂钩
- windows – 如何将Module :: Build配置为NOT以只
- PowerShell – Windows 10上缺少Install-Windows
- Windows下nodejs环境配置
- type-conversion – 如何在Go中将[4] uint8转换为
- windows – 用于构建qt的clang的mkspecs是什么?
- windows-store-apps – 如何启用FPS监控来测试XA
- 如何以编程方式创建Microsoft Access数据库?