C# 从另一个进程调用方法

C# 从另一个进程调用方法,c#,button,methods,process,gettype,C#,Button,Methods,Process,Gettype,我有一份工作申请。现在我正在尝试编程自动点击按钮的功能。要想让它起作用,我需要进去 我可以很容易地看到反编译器的源代码,所以我知道所有的类名、方法名等 我一直在研究类型和Type.GetMethod()方法。唯一的问题是,我试图处理应用程序的流程。我捕获了正确的应用程序(Process.GetProcessByName(“WorkProcess”)),我可以捕获“Type”,但我不知道如何获得正确的类,并调用正确的方法 我将为您提供反编译器中显示的布局: WorkApp > WorkApp

我有一份工作申请。现在我正在尝试编程自动点击按钮的功能。要想让它起作用,我需要进去

我可以很容易地看到反编译器的源代码,所以我知道所有的类名、方法名等

我一直在研究类型和Type.GetMethod()方法。唯一的问题是,我试图处理应用程序的流程。我捕获了正确的应用程序(Process.GetProcessByName(“WorkProcess”)),我可以捕获“Type”,但我不知道如何获得正确的类,并调用正确的方法

我将为您提供反编译器中显示的布局:

WorkApp
> WorkApp.Exe
--> References
--> <Default namespace>
--> WORKAPP
----> frmsomething (Form)
------> _btnsync : Button
------> btnsync : Button

如果您试图从应用程序的外部世界调用应用程序中的方法,一种方法是在该应用程序中创建远程线程,并从该应用程序内部使用该dll,使用反射进行工作。 我对一个应用程序这样做了,它成功了。
如果您想了解详细信息,请对我的回答进行评论。

WA.GetType()
将返回
System.Diagnostics.Process
,而
t.GetType()
将返回
System.Type
,这两种方法对您的目的都是无用的。此外,进程不必是CLR进程。你为什么不给相关的按钮发送一条消息呢?看,我想这样做,唯一的问题是我想按下的按钮在另一个进程内,由这个应用程序创建。打开时,您会在任务管理器中看到这两个表单,但第二个表单只能通过contextmenu打开。是的,因此首先发送一条消息,指示您要调用该菜单。您是指注入dll吗?(PS不是我谁-1你)是的,这就是我的意思
    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
        }
    }