C#窗口控制另一个窗口中的button

澄澈秋水 2016-06-22 03:27:11

private void btnControl_Click(object sender, EventArgs e)
{
IntPtr mainWindows = FindMainWindowHandle("Form1",100,25);

IntPtr needbtn = FindWindowEx(mainWindows, IntPtr.Zero,null, "button1"); //获取名字为button1的按钮



if(needbtn==IntPtr.Zero)
throw new Exception("没有找到名字为1的按钮");
else
{
PostMessage(needbtn,0x0201,0,0);
PostMessage(needbtn,0x0202,0,0);
MessageBox.Show("找到控件");
}

//PostMessage(needbtn, 0x0201, 0, 0);
//PostMessage(needbtn, 0x0202, 0, 0);

}

//获得待测程序主窗体句柄
private static IntPtr FindMainWindowHandle(string caption, int delay, int maxTries)
{
IntPtr mwh = IntPtr.Zero;
bool formFound = false;
int attempts = 0;
while (!formFound && attempts < maxTries)
{
if (mwh == IntPtr.Zero)
{
//MessageBox.Show("没有找到目标窗体", "错误提示");
Thread.Sleep(delay);
++attempts;
mwh = FindWindow(null, caption);
}
else
{
formFound = true;
}
}

if (mwh == IntPtr.Zero)
throw new Exception("Could not find main window");
else
return mwh;

}



这是我要操作的Form1:
...全文
580 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jaye-L 2016-06-26
  • 打赏
  • 举报
回复
最好用spy++检查一下这个按钮的标题是不是button1 或者检查是不是桌面上有多个名为Form1的窗体
那城 2016-06-25
  • 打赏
  • 举报
回复
定义成公共的就ok了
threenewbee 2016-06-24
  • 打赏
  • 举报
回复
和spy++对照下,看看你的句柄找的是不是不对。
g460554451 2016-06-24
  • 打赏
  • 举报
回复
难道。。。这个按钮的name不是button1?只能看到它的text是button1,我也是新手,乱猜的。
神探布杰 2016-06-23
  • 打赏
  • 举报
回复
同一时刻窗口标题为"Form1"的窗体是不是只有一个?有没有可能你是获取的另一个窗体,而这个窗体里没有button1? 如果你的目标窗体和你贴的代码在同一个程序里面,直接用XXForm.Handle来获取窗口句柄,代替mainWindows传递给函数试试看。 多用用Spy++,查找窗体、控件那叫一个爽
澄澈秋水 2016-06-22
  • 打赏
  • 举报
回复
求大神告诉我错在哪里,找不出错误,只知道是控件获取不成功

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧