从另一个进程调用方法
Invoke a method from another process
我有一份工作申请。现在我正在尝试编写自动单击按钮的功能。为此,我需要进入内部。
我可以很容易地使用反编译器查看源代码,所以我知道所有 class 名称、方法名称等...
我一直在研究类型和 Type.GetMethod() 方法。唯一的问题是我尝试使用应用程序的进程。我捕获了正确的应用程序(Process.GetProcessByName("WorkProcess")),我可以捕获'Type',但我不知道如何获取正确的class,并调用正确的方法。
我会给你一个在反编译器中显示的布局:
WorkApp
> WorkApp.Exe
--> References
--> <Default namespace>
--> WORKAPP
----> frmsomething (Form)
------> _btnsync : Button
------> btnsync : Button
关于如何做到这一点有什么想法吗?我搜索了 google,但找不到答案...
谢谢
安东尼
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
}
}
如果您尝试从外部世界调用应用程序中的方法,一种方法是在该应用程序中创建远程线程,并从该应用程序内部使用该 dll,使用反射完成工作。
我对一个应用程序做了这个并且它有效。
如果您需要详细信息,请评论我的回答。
我有一份工作申请。现在我正在尝试编写自动单击按钮的功能。为此,我需要进入内部。
我可以很容易地使用反编译器查看源代码,所以我知道所有 class 名称、方法名称等...
我一直在研究类型和 Type.GetMethod() 方法。唯一的问题是我尝试使用应用程序的进程。我捕获了正确的应用程序(Process.GetProcessByName("WorkProcess")),我可以捕获'Type',但我不知道如何获取正确的class,并调用正确的方法。
我会给你一个在反编译器中显示的布局:
WorkApp
> WorkApp.Exe
--> References
--> <Default namespace>
--> WORKAPP
----> frmsomething (Form)
------> _btnsync : Button
------> btnsync : Button
关于如何做到这一点有什么想法吗?我搜索了 google,但找不到答案...
谢谢 安东尼
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
}
}
如果您尝试从外部世界调用应用程序中的方法,一种方法是在该应用程序中创建远程线程,并从该应用程序内部使用该 dll,使用反射完成工作。 我对一个应用程序做了这个并且它有效。 如果您需要详细信息,请评论我的回答。