我的主要是这两条线,但最后我无法关闭手柄.我试图获得一个窗口矿井weeper的句柄,然后关闭它,但它不起作用.而且我有我需要的所有相关内容.
#include <windows.h>
#include <stdio.h>
Run Code Online (Sandbox Code Playgroud)
在主要
HWND wh = FindWindow("Minesweeper", "Minesweeper");
CloseHandle (wh);
Run Code Online (Sandbox Code Playgroud)
在printf的wh我看到的价值等同于本次募集间谍++.
我收到了错误
"异常地址:0x7c90e4ff"
我错过了什么?
顺便说一下:如果我改变上面的两行,关闭一个进程的句柄就可以了.
Dav*_*nan 14
这里有几个基本问题.首先,你不要CloseHandle使用窗口句柄调用.这不是那种处理方式.CloseHandle当你有a HANDLE但HWND不是a 时,你会使用HANDLE.如果你想破坏你需要调用的窗口句柄DestroyWindow.
然而,该文件的DestroyWindow状态:
线程不能使用DestroyWindow来销毁由不同线程创建的窗口.
所以你也做不到.
您可以做的是向WM_CLOSE窗口发送消息.这应该足以说服它优雅地结束.
请注意,WM_CLOSE发送而不是发布.从文档中可以看出这一行:
窗口通过其WindowProc函数接收此消息.
更新
John Knoller指出我错误解释了Windows文档,而这些文档并未编写,以涵盖一个应用程序试图关闭另一个应用程序的情况.
约翰的建议是:
事实上,
WM_CLOSE使用PostMessage或发送到另一个进程更明智SendNotifyMessage.如果你使用SendMessage,如果这个过程没有抽取信息,你就会陷入困境.使用WM_SYSCOMMAND/ 更好,SCCLOSE这与单击窗口标题的关闭按钮基本相同.
| 归档时间: |
|
| 查看次数: |
3944 次 |
| 最近记录: |