我有一个名为(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();