向隐藏 window 发送消息无效
sendMessage to a hidden window did not work
我想在 window 的按钮上发送一条点击消息,它的标题是 "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(...)
仍然 return 相同的句柄,而 "Form1" 被隐藏,并且与之前的句柄相同(当显示时)
设置 "Form1" 的 hidden/show 是通过以下行完成的:
显示:
ShowWindow(HWin,SW_SHOW);
隐藏:
ShowWindow(HWin,SW_HIDE);
我 运行 使用 VS 2010
我想知道 sendMessage 是否不能在隐藏的情况下工作 window 还有其他方法吗??
谢谢大家
我假设您正在明智地检查以确保在执行消息传递代码之前隐藏 window 时您的 FindWindow
调用不会返回 NULL。
假设您正在获取从 FindWindow 返回的有效 HWND,而不是发送到按钮本身的 BM_CLICK
消息。尝试向父 window.
发送 WM_COMMAND
消息
if (HWin && btn)
{
LONG ctrlId = GetWindowLong(btn, GWL_ID);
SendMessage(HWin, WM_COMMAND, MAKEWORD((WORD)ctrlId, BN_CLICKED), (LPARAM)btn);
}
如果应用程序本身处于隐藏时不期望点击通知的状态,则您可能会出现一些非常奇怪的行为。
我认为这适用于 win32 应用程序或对话框。不确定 .NET 表单应用程序。
我想在 window 的按钮上发送一条点击消息,它的标题是 "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(...)
仍然 return 相同的句柄,而 "Form1" 被隐藏,并且与之前的句柄相同(当显示时)
设置 "Form1" 的 hidden/show 是通过以下行完成的:
显示:
ShowWindow(HWin,SW_SHOW);
隐藏:
ShowWindow(HWin,SW_HIDE);
我 运行 使用 VS 2010
我想知道 sendMessage 是否不能在隐藏的情况下工作 window 还有其他方法吗??
谢谢大家
我假设您正在明智地检查以确保在执行消息传递代码之前隐藏 window 时您的 FindWindow
调用不会返回 NULL。
假设您正在获取从 FindWindow 返回的有效 HWND,而不是发送到按钮本身的 BM_CLICK
消息。尝试向父 window.
WM_COMMAND
消息
if (HWin && btn)
{
LONG ctrlId = GetWindowLong(btn, GWL_ID);
SendMessage(HWin, WM_COMMAND, MAKEWORD((WORD)ctrlId, BN_CLICKED), (LPARAM)btn);
}
如果应用程序本身处于隐藏时不期望点击通知的状态,则您可能会出现一些非常奇怪的行为。
我认为这适用于 win32 应用程序或对话框。不确定 .NET 表单应用程序。