从另一个应用程序访问Winforms中的控制状态



我有一个名为(Myapp.exe)的示例winform应用程序,它有一个表单和一个按钮。我将从另一个应用程序启动此应用程序(.exe)。

我的问题是。从另一个应用程序(控制台或winform)启动(Myapp.exe)应用程序后,我需要访问(Myapp.exe)应用程序中按钮的状态。这是如何实现的??有可能吗?有谁能在这件事上取悦我吗。

这是可能的,但您需要意识到,从外部角度来看,按钮是一个窗口(带句柄),其父窗口是窗体(也是一个带句柄的窗口),其状态可能无法使用与WinForms中显示的属性完全相同的有用名称来访问。

例如,这个C++代码将在C#应用程序上运行,即使该应用程序是通过调试器运行的:

HWND hwndCSharp = ::FindWindow(NULL,_T("Form1") ); 
if (hwndCSharp != NULL) 
{
    // Walk the window's child windows (controls / views): 
    HWND hwndChild = ::GetWindow(hwndCSharp, GW_CHILD); 
    while (hwndChild != NULL) 
    {
        // Get state here... 
        hwndChild = ::GetWindow(hwndChild, GW_HWNDNEXT); 
    }
}

这已经在stack中讨论过了,所以这里只是一个相同的代码,请尝试一下。

  Application application = Application.Launch("Myapp.exe");
       Window window = application.GetWindow("bar", InitializeOption.NoCache);
       Button button = window.Get<Button>("button1");
       button.Click();

最新更新