【发布时间】:2016-02-03 14:17:34
【问题描述】:
我有一个工作申请。现在我正在尝试编程自动单击按钮的能力。为此,我需要进入内部。
我可以用反编译器轻松查看源代码,所以我知道所有的类名、方法名等......
我一直在研究类型和 Type.GetMethod() 方法。唯一的问题是我尝试使用应用程序的过程。我捕获了正确的应用程序 (Process.GetProcessByName("WorkProcess")),我可以捕获“类型”,但我不知道如何找到正确的类并调用正确的方法。
我会给你一个反编译器中显示的布局:
WorkApp
> WorkApp.Exe
--> References
--> <Default namespace>
--> WORKAPP
----> frmsomething (Form)
------> _btnsync : Button
------> btnsync : Button
关于如何做到这一点的任何想法?我搜索了谷歌,但找不到答案...
谢谢 安东尼
PS:我无法在工作中访问应用程序的源代码。
PPS:这是我目前的代码:
Process WA = null;
private void Initialize()
{
Process[] pa = Process.GetProcesses();
foreach (Process p in pa)
{
if (p.ProcessName.Contains("WorkApp"))
{
WA = p;
break;
}
}
if (WA == null)
{
Console.WriteLine("App was not found...");
stop = true;
}
else
{
Type t = WA.GetType();
t.GetType();
// This is the place I got stuck
}
}
【问题讨论】:
-
WA.GetType()将返回System.Diagnostics.Process,而t.GetType()将返回System.Type,这两者对于您的目的都是无用的。此外,进程不一定是 CLR 进程。为什么不向相关按钮发送消息?见click on a button in another application from my C# application?。 -
我想这样做,唯一的问题是我要按下的按钮在另一个进程中,由这个应用程序创建。打开的时候,在任务管理器中可以看到这两个,但是第二种形式只能通过上下文菜单打开。
-
是的,所以首先发送一条消息,指示您要调用该菜单。
标签: c# button methods process gettype