2012-03-14 53 views
2

我有一個帶窗體和按鈕的示例winform應用程序(Myapp.exe)。我將從另一個應用程序啓動此應用程序(.exe)。在另一個應用程序中訪問Winforms中的控件狀態

我的問題在這裏。從另一個應用程序(控制檯或winform)啓動(Myapp.exe)應用程序後,我需要訪問(Myapp.exe)應用程序中的按鈕狀態。這是如何實現的?可能嗎?任何人都可以請我這個。

回答

1

這是可能的,但您需要認識到,從外部的角度來看,按鈕是一個窗口(帶有句柄),其父窗體(也是一個帶有句柄的窗口),其狀態可能不可訪問與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); 

    } 

} 
0

這已經在stack.so這裏討論的是隻是一個相同的代碼只是試試看。

Application application = Application.Launch("Myapp.exe"); 
     Window window = application.GetWindow("bar", InitializeOption.NoCache); 

     Button button = window.Get<Button>("button1"); 
     button.Click(); 
+0

您可以與我分享一些指針,這已經討論過了。 – Sanjaybxl 2012-03-14 09:09:06

+0

http://stackoverflow.com/questions/1134993/control-another-application-using-c-sharp – 2012-03-14 09:20:34

+0

什麼是Application.GetWindow或Application.Launch?這可能是C#代碼,但它不使用BCL提供的方法... – 2012-03-14 09:20:36

相關問題