我想在窗口的按钮上发送一条点击消息,它的标题是“Form1”,按钮的标题是“button1”,这是我的代码:
我通过 SPY++ 检查了这个句柄似乎是正确的..
#include "stdafx.h"
#include <windows.h>
#include <conio.h>
int main()
{
while(1)
{
HWND HWin, btn;
HWin = FindWindowExA(NULL,NULL,NULL,"Form1");
btn = FindWindowExA(HWin,0,NULL,"button1");
SendMessage(btn,BM_CLICK,0,0);
_getch();
}
}
这段代码运行良好,一切都很好……但是当“Form1”设置为隐藏时,sendMessage 似乎不起作用!为什么???
请注意,FindWindowExA(...)
在隐藏“Form1”时仍然返回相同的句柄,并且与之前的相同(显示时)
设置隐藏/显示“Form1”是通过以下几行完成的:
显示:
ShowWindow(HWin,SW_SHOW);
隐藏:
ShowWindow(HWin,SW_HIDE);
我在 VS 2010 上运行
我想知道如果 sendMessage 在隐藏窗口上不起作用还有其他方法吗?
谢谢大家
我假设您FindWindow
在执行消息传递代码之前明智地检查以确保当窗口隐藏时您的调用没有返回 NULL。
假设您正在获取从 FindWindow 返回的有效 HWND,而不是BM_CLICK
发送到按钮本身的消息。尝试向WM_COMMAND
父窗口发送消息。
if (HWin && btn)
{
LONG ctrlId = GetWindowLong(btn, GWL_ID);
SendMessage(HWin, WM_COMMAND, MAKEWORD((WORD)ctrlId, BN_CLICKED), (LPARAM)btn);
}
如果应用程序本身处于隐藏状态时不期望单击通知的状态,则您可能会面临一些非常奇怪的行为。
我认为这适用于 win32 应用程序或对话框。不确定 .NET 表单应用程序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句