2016-10-16 1 views
1

은 지금까지 나는 창 만들기 - 활성, SendKeys를 사용하여 텍스트를 보낼 수있는,하지만 내가 좋아하는 SendMessageuser32.dll. 어떻게하면 텍스트 상자를 찾을 수 있습니까?

IntPtr main = FindWindow(null, "Label Code (Scan)"); 
if (!main.Equals(IntPtr.Zero)) 
    { 
     if (SetForegroundWindow(main)) 
     { 
      SendKeys.SendWait(code); 
      SendKeys.SendWait("{ENTER}"); 
      } 
    } 

내가 시도 뭔가를 사용하여 백그라운드에서 그것을하고 싶은 :

IntPtr main = FindWindow(null, "Label Code (Scan)"); 
SendMessage(main, 0x000C, 0, "Hello"); 

그러나 이름 변경 창 제목을 "Hello"로 바꿉니다. 아이 창을 찾아야하지만, lpszClass에 대해 알 수는 없습니다.

public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); 

enter image description here

+0

Winspector에서 "클릭하고 끌어서는"곳을 클릭하고 드래그 한 다음 십자형 커서를 텍스트 상자 자체로 끕니다. 그러면 어떤 정보를 얻게됩니까? – NineBerry

+0

@ NineBerry 이미지에 표시됩니다. 00030BA : CVIRTLVDChild00400000 "레이블 코드 (스캔)" –

+0

System.Windows.Automation을 사용하여 모든 작업을 수행합니다. 창을 찾고, 텍스트 상자를 찾은 다음 텍스트를 입력합니다. – andlabs

답변

2

창에서 컨트롤은 윈도우 제어 진짜입니다. 그들은 그 창에 의해 그려지고 관리됩니다. 그러나 창은 컨트롤과 상호 작용할 수 있도록 Windows 자동화 프레임 워크를 지원할 수 있습니다.

Inspect 도구를 사용하여 창이 Windows 자동화 API를 지원하는지 확인하십시오.

만약 그렇다면 검사 도구에 표시되는 정보와 함께 classes in System.Windows.Automation을 사용하여 텍스트를 설정하십시오.

관련 문제