Доступ к состоянию контроля в Winforms из другого приложения - PullRequest
2 голосов
/ 14 марта 2012

У меня есть пример приложения winform (Myapp.exe) с формой и кнопкой. Я буду запускать это приложение (.exe) из другого приложения.

Мои вопросы здесь. После запуска приложения (Myapp.exe) из другого приложения (консоли или winform) мне нужно получить доступ к состоянию кнопки в приложении (Myapp.exe). Как это достигается ?? Является ли это возможным? Может ли кто-нибудь порадовать меня этим

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Это возможно, но вы должны понимать, что с внешней точки зрения кнопка - это окно (с дескриптором), родительским элементом которого является форма (также окно с дескриптором), и ее состояние может быть недоступно при совершенно те же полезные имена, что и свойства в 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 голосов
/ 14 марта 2012

это уже обсуждалось в stack.so, вот только тот же код, просто попробуйте.

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

       Button button = window.Get<Button>("button1");
       button.Click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...