关于句柄和向另一个窗口发送消息!
自己写了个测试程序,流程是这样的!
先创建一个进程,然后使用EnumWindows来枚举找到这个进程在桌面的窗口句柄存于TWnd里面,
然后向这个窗口句柄发送消息,::SendMessage(TWnd,WM_CLOSE,0,0);为什么这个窗口不会关闭?
还有一个问题,我看Windows程序第二版里面有一个例子的一段代码是“获取鼠标所在处的窗口句柄”代码如下
为什么上面这段代码获取到的窗口句柄,与我用EnumWindows枚举获取到的窗口句柄不一样呢(有些软件会一样),
举个例子:我把鼠标停在我打开的“暴风影音”窗口标题栏上,可以获取得它的窗口句柄0X1111111,但是我用EnumWindows
枚举获取的窗口句柄不是0X1111111,而是0X2222222,为什么呢?
还有个问题,在一个类中自定义消息,返回类型都是long的吗?看了好几个例子都是返回类型都是long ?
了解的朋友说下!关注的朋友帮顶下!谢谢了!
先创建一个进程,然后使用EnumWindows来枚举找到这个进程在桌面的窗口句柄存于TWnd里面,
然后向这个窗口句柄发送消息,::SendMessage(TWnd,WM_CLOSE,0,0);为什么这个窗口不会关闭?
还有一个问题,我看Windows程序第二版里面有一个例子的一段代码是“获取鼠标所在处的窗口句柄”代码如下
void CMainWindow::OnMouseMove(UINT nFlags, CPoint point)
{
if(m_bCatchMouseDown)
{
// 将客户区坐标转换为屏幕坐标
::ClientToScreen(m_hWnd, &point);
// 取得鼠标所在处的窗口的句柄
HWND hWnd = ::WindowFromPoint(point);
if(hWnd == m_wndInfo.m_hWnd)
return;
// 擦除前一个窗口上的红色框架,取得新的目标窗口的信息,绘制框架
m_wndInfo.EraseFrame();
m_wndInfo.GetInfo(hWnd);
m_wndInfo.DrawFrame();
// 通过无效显示区域,使窗口客户区重画
::InvalidateRect(m_hWnd, &m_rcMsgBox, TRUE);
}
}
为什么上面这段代码获取到的窗口句柄,与我用EnumWindows枚举获取到的窗口句柄不一样呢(有些软件会一样),
举个例子:我把鼠标停在我打开的“暴风影音”窗口标题栏上,可以获取得它的窗口句柄0X1111111,但是我用EnumWindows
枚举获取的窗口句柄不是0X1111111,而是0X2222222,为什么呢?
还有个问题,在一个类中自定义消息,返回类型都是long的吗?看了好几个例子都是返回类型都是long ?
了解的朋友说下!关注的朋友帮顶下!谢谢了!
...全文
相关推荐
使用JNA获取窗口句柄,并发送消息
使用JNA获取窗口句柄,并发送消息 可以使用applet的方式,实现 CS架构的SSO.
C# 通过窗口句柄为指定窗口发送指令(user32.dll,mshtml)
c# win32.dll mshtml
mfc实现点击一个窗口弹出另一个窗口
该资源里面有一个可以实现点击一个窗口弹出另一个窗口的实例,还有一个本人在解决这个问题时所做的笔记。你们可对比实例和我的笔记来参考。
c# 已知一个程序的控件句柄发送系统消息的实例,另附送全局热键
实现了按照textbox3获得的句柄值,将textbox2的消息发送至目标 c# 已知一个程序的控件句柄发送系统消息的实例,另附送全局热键
send_handle.zip_主窗口句柄_发送消息_消息_窗口句柄_进程
发送消息给某个只知道进程句柄的程序的主窗口的程序


进程/线程/DLL
