我有一個帶窗體和按鈕的示例winform應用程序(Myapp.exe)。我將從另一個應用程序啓動此應用程序(.exe)。在另一個應用程序中訪問Winforms中的控件狀態
我的問題在這裏。從另一個應用程序(控制檯或winform)啓動(Myapp.exe)應用程序後,我需要訪問(Myapp.exe)應用程序中的按鈕狀態。這是如何實現的?可能嗎?任何人都可以請我這個。
我有一個帶窗體和按鈕的示例winform應用程序(Myapp.exe)。我將從另一個應用程序啓動此應用程序(.exe)。在另一個應用程序中訪問Winforms中的控件狀態
我的問題在這裏。從另一個應用程序(控制檯或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.so這裏討論的是隻是一個相同的代碼只是試試看。
Application application = Application.Launch("Myapp.exe");
Window window = application.GetWindow("bar", InitializeOption.NoCache);
Button button = window.Get<Button>("button1");
button.Click();
您可以與我分享一些指針,這已經討論過了。 – Sanjaybxl 2012-03-14 09:09:06
http://stackoverflow.com/questions/1134993/control-another-application-using-c-sharp – 2012-03-14 09:20:34
什麼是Application.GetWindow或Application.Launch?這可能是C#代碼,但它不使用BCL提供的方法... – 2012-03-14 09:20:36