请问C#如何对第三方程序的窗口进行各种操作

caibirdcnb 2016-05-23 02:36:00
各位高手,我是初学者,所以可能问的问题很幼稚。麻烦不吝指教。

假设我要在C#程序中对第三方程序的窗口进行各种操作,例如下面例子将“任务管理器窗口”前置并激活。
通过API函数的FindWindow函数,得到窗口句柄,然后调用SetForegroundWindow函数。

然而,我又看到一篇文章标题为:Microsoft Win32 to Microsoft .NET Framework API Map。
https://msdn.microsoft.com/en-us/library/aa302340.aspx#win32map_windowfunctions

按照里面的对照,Win32的SetForegroundWindow和.NET Framework的System.Windows.Forms.Form.Activate是对应的。
我的问题是:如果使用Form.Activate代替SetForegroundWindow,【这里应该填什么?】.Form.Activate();

另外一个问题是:像这样的问题,用什么百度关键字能找到答案呢?我找了很久都无法找到,但我又觉得我的问题很简单,就是在C#如何对第三方程序的窗口进行各种操作。但确实搜索不到答案。

using System;
using System.Net;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;

class Trade
{

// 查找主窗口
[DllImport("user32.dll", EntryPoint = "FindWindow")]
private extern static IntPtr FindWindow(
string lpClassName,
string lpWindowName);

// 窗口最前
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);

static void Main()
{
IntPtr maindHwnd = FindWindow(null, "任务管理器");
SetForegroundWindow(maindHwnd);

//【这里应该填什么?】.Form.Activate();

}
}
...全文
994 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
顺便说一下,对第三方窗体的操作,基本可以用消息完成,
  • 打赏
  • 举报
回复
获取句柄之后事情就简单了,不过我所知都是用api操作,一般是发送seedmessage消息让窗口之前
zj_zwl 2016-05-24
  • 打赏
  • 举报
回复
引用 2 楼 caibirdcnb的回复:
[quote=引用 1 楼 xian_wwq 的回复:] c#调用win api操作窗体 拿到窗口句柄后,其他操作都可以通过句柄来实现 文档说了是对应,可不是完全的替代
谢谢回复。 这么说的话,我想请问另外的问题: 1. 如果想激活任务管理器并前置,能不能不使用DllImport实现?如果能,如何实现? 2. Form.Activate()这个方法的格式是什么? 例如,如果是窗体.Form.Activate(),那窗体应该是句柄还是标题还是其它什么呢? [/quote] 外部窗口不能这么用。
caibirdcnb 2016-05-23
  • 打赏
  • 举报
回复
这个论坛怎么回复热心程度比我在人大经济论坛差那么多啊,估计程序员都比较忙。
caibirdcnb 2016-05-23
  • 打赏
  • 举报
回复
引用 1 楼 xian_wwq 的回复:
c#调用win api操作窗体 拿到窗口句柄后,其他操作都可以通过句柄来实现 文档说了是对应,可不是完全的替代
谢谢回复。 这么说的话,我想请问另外的问题: 1. 如果想激活任务管理器并前置,能不能不使用DllImport实现?如果能,如何实现? 2. Form.Activate()这个方法的格式是什么? 例如,如果是窗体.Form.Activate(),那窗体应该是句柄还是标题还是其它什么呢?
xian_wwq 2016-05-23
  • 打赏
  • 举报
回复
c#调用win api操作窗体 拿到窗口句柄后,其他操作都可以通过句柄来实现 文档说了是对应,可不是完全的替代

111,097

社区成员

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

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

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