2010-03-05 2 views
2

내 목표는 응용 프로그램을 VB.NET에서 제어하는 ​​것입니다. API가 없으며 소스가없고 컴파일 된 EXE 파일 만 있습니다. 열린 응용 프로그램을 찾고, 응용 프로그램 내에서 단추를 찾고, 단추를 클릭하고 클릭 한 사실을 알 수있는 방법이 있습니까? 응용 프로그램 내에서 텍스트 상자의 내용을 읽을 수있는 방법이 있습니까?VB.NET에서 타사 EXE 파일을 제어하는 ​​방법이 있습니까?

+0

이 모든 작업을 수행하는 데 어려움을 겪을 수 있지만 수행 할 수 있다고 생각합니다. –

답변

4

예, Windows   Vista (또는 Windows   7, 또는 Windows Server 2003 이상)에는 "UI Automation"API가 있습니다.

관리 옵션이 있습니다. System.Windows.AutomationWPF의 일부로 .NET 3.0과 함께 제공됩니다. System.Windows.Automation은 WPF의 일부로 제공되었지만 대상 응용 프로그램에서 WPF를 사용할 필요는 없습니다.

당신은 더 읽을 수 있습니다 다음 UI Automation blog

0

예. 예를 들어 EnumWindowsEnumChildWindows과 같은 기본 API 호출을 사용해야합니다. How To Enumerate Windows Using the Win32 API을 살펴보십시오. Visual Basic 6.0 용이지만 개념은 같습니다.

+0

UI 자동화 API에 대한 관리 코드 래퍼가 있습니다. – Cheeso

+0

내가 읽을 수있는 한 WPF가 필요합니다. 그래도 틀릴 수 있습니다. –

+0

흥미 롭군요 ... 저는 이것을 얼마 동안 찾고 있었으며 결코 이것을 보지 못했습니다. VB.Net에서 샘플을 알고 있습니까? – ajl

1

예를 사용하여 기본적인 소개를 제공 할 수 있지만, 먼저 첫 번째 프로토 타입 스크립트로 'AutoIt'를 사용하는 것이 더 쉬울 수 있습니다 설치 프로그램을 테스트하는 UI 자동화를 사용하여

  • CodeProject article #1 쇼 응용 프로그램을 찾으려면. 해당 응용 프로그램 창의 핸들을 찾고 해당 창의 자식 컨트롤을 통해 열거하고 해당 텍스트 상자와 단추를 찾습니다. AutoIt 프로토 타입이 작동하면 실제 코드로 다이빙하고 P/Invoke ' 들

    Calling SendMessage (P/Invoke) keeps crashing을 게시 스택 오버플로에서 C#의 샘플에서보세요 ... 열거하고 창문을 발견, 그것의 핸들을 얻고 그것을 자동화를 수행합니다. OP는 타사 창 응용 프로그램에 액세스하여 텍스트를 추출하고 해당 프로그램 내에서 해당 텍스트를 사용하려고했습니다 ... 해당 링크에서 'FindWindow'를 사용하여 주 프로세스 창의 하위 창을 반복하는 방법에 주목하십시오.

  • 관련 문제