3
|
Simon H. · 技术社区 · 15 年前 |
1
8
你可以在一个独立的线程中从你的DLL代码创建一个隐藏窗口。处理消息,如下所示。 你可以用这个窗口类来实现。
还要确保包含退出条件。 |
2
1
您可以让您的dll用户传递其Hwnd。一旦你有了这个句柄,你就可以获取windowlongptr的window proc(gwl_wndproc),然后设置windowlongptr你自己的window proc,它将处理wm_powerbroadcast,并将所有消息传递给你从初始getwindowlongptr存储的旧window过程。 当dll退出时,您可以将windowlongptr设置为它自己的window proc,即使您的dll被卸载,早期的thinigs也会继续很好地运行。 |
3
1
我在Windows控制台应用程序中遇到了类似的问题。我写了一篇关于问题是什么、隐藏窗口是如何成为唯一的解决方案以及如何做到这一点的博客文章。这个职位空缺 here 源代码可用 here . 我使用的基本原理几乎与Indeera的答案相同。 我不确定您是否需要修改我的解决方案才能在DLL中运行。我相信所有有消息队列的线程(当线程创建一个窗口时,它会接收wm_powerbroadcast消息),因此即使Windows应用程序加载了您自己的线程,也可以对其进行假脱机。 顺便说一句,值得注意的是,在系统进入休眠状态(如电池电量严重不足)或任何其他睡眠状态之前,您不能保证收到通知。但您将收到 PBT_APMRESUMEAUTOMATIC 事件(或) PBT_APMRESUMECRITICAL 在Vista之前的系统上)当系统在此类事件发生后重新联机时。 |
vini · 安装wfp内核驱动程序后,devcon状态返回39 2 年前 |
I101I · 如何镜像HBITMAP 2 年前 |
E235 · 如何查看谁创建了Windows NamedPipe 2 年前 |
Pizza Ãcke · 创建带有内存映像的Windows托盘图标 2 年前 |
Jabu · 如何获取列表框滚动条“拇指”的高度? 2 年前 |
tree1234 · 对可执行文件进行代码设计,并允许修改某些字节 2 年前 |
Penachia · PDF FontDescriptor标志 6 年前 |