各位高手,本人是刚开始学者,所以可能问的问题很幼稚。麻烦不吝指点。
假设本人要在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);
假设本人要在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();
}
}
解决方案
15
c#调用win api操作窗体
拿到窗口句柄后,其他操作都可以通过句柄来实现
文档说了是对应,可不是完全的替代
拿到窗口句柄后,其他操作都可以通过句柄来实现
文档说了是对应,可不是完全的替代
6
外部窗口不能这么用。
1
获取句柄之后事情就简单了,不过本人所知都是用api操作,一般是发送seedmessage消息让窗口之前
1
顺便说一下,对第三方窗体的操作,基本可以用消息完成,