2014-04-19 6 views
0

스플래시 화면에 두 개의 텍스트 상자 컨트롤이있는 WPF 응용 프로그램이 있습니다.WPF 응용 프로그램에 대한 컨트롤 텍스트 설정

이제이 텍스트 상자에 일부 텍스트를 설정해야합니다. 일반적으로 FindWindowEx 제어 창을 찾을 수 및 SetWindowText, 호출 할 수 있지만 문제는 모든 Windows 여기를 볼 수 없습니다.

내가 열어도 Spy++ 만 보이는 창은 창 자체입니다. 아이는 전혀 없습니다. 무슨 일인지 설명해 주시겠습니까? WPF에서 다른 곳에서 작동합니까? 정상적인 창문이 보통 HWND으로 처리되지 않습니까? 어떻게 그 컨트롤에 텍스트를 설정할 수 있습니까?

의견에서 제안한대로 Snoop을 시도했지만 스플래시 화면의 컨트롤은 볼 수 없었지만 일부는 볼 수있었습니다. 또한 나는 C# 응용 프로그램에서 수동으로 Snoop을 사용하지 않고이 작업을 수행하려고합니다. 내가 Snoop의 소스를 가지고 있고 이것을하기 위해 응용 프로그램에 뭔가를 ijnect해야 할 것 같습니다. 맞아?

다른 프로세스에서 WPF 컨트롤의 텍스트를 설정하는 것이 정말 어렵습니까?

+0

사용할 수 있나요? –

+0

감사합니다. 이제는 WPF 응용 프로그램이라고 말할 수 있습니다. 스플래시 창을 스누핑 할 수 없었지만 필요한 컨트롤과 창을 볼 수 있습니다. 소스 코드에서 어떻게 할 수 있습니까? – incognito

답변

0

솔루션은 스눕 설치를 시도해 봤어 Microsoft UI Automation

AutomationElement rootElement = AutomationElement.RootElement; 

if (rootElement != null) 
{ 
    Condition condition = 
      new PropertyCondition(AutomationElement.NameProperty, "WindowSplash"); 

    AutomationElement appElement = 
      rootElement.FindFirst(TreeScope.Children, condition); 

    if (appElement != null) 
    { 
     Condition condition = 
      new PropertyCondition(
        AutomationElement.AutomationIdProperty, "element1"); 
     AutomationElement element = 
      parentElement.FindFirst(TreeScope.Descendants, condition); 

     if (element != null) 
     { 
      ValuePattern valuePatternB = 
        element.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern; 
      valuePatternB.SetValue("hello automation world!"); 
     } 
    } 
} 
0

WPF 창의 사용자 정의 창 메시지를 만들 수 있다고 생각합니다 (ID 1234). 그런 다음 다른 프로세스의 PostMessage WinAPI 함수를 사용하여 설정하려는 문자열로이 1234 메시지를 WPF 창에 게시 할 수 있습니다. WPF 윈도우는 기본 메시지 처리 프로 시저에 대한 재정의 (override) 기능을 가지며 식별자 1234가있는 메시지가 발생하면 WPF 엔진 클래스 및 메서드를 사용하여 적절한 컨트롤 텍스트를 설정합니다.

+0

내 응용 프로그램이 아닙니다. 나는 소스 코드가 없다. – incognito

관련 문제