2009-05-09 6 views
6

저는 플래시 게임용 로봇을 만들고 있으며, 모든 AutoIt 함수를 내 C# 코드로 가져 오는 방법을 알아 냈습니다.C# 및 AutoIt을 사용하여 플래시 게임에 메시지 보내기

string title = "Minesweeper"; 
string full = auto.WinGetTitle(title,""); 
string handle = auto.WinGetHandle(full, ""); 
if (auto.WinExists(full, "") == 1) 
    textBox1.Text = "window exists"; 
addressBox.Text = full; 

for (int r = 1; r < 40; r++) 
{ 
    auto.ControlClick(full, "", "", "left", 2, r * 10, r * 10); 
    //auto.ControlClick(handle, "", "", "left", 2, r * 10, r * 10); 
} 

(I은 주석 처리 한 손잡이와 그 반대를 가진 것이어야한다 확실 해요,하지만이 Minesweeper 작동합니다.)

그래서 지뢰 찾기 위해 작동 할 그것을 필요로하지 않습니다 활성 창 내 플래시 게임에서 작동 시키려고 할 때 인터넷   탐색기 창이 활성이어야합니다. Flash에 필요한 것입니까, 아니면 게임을 최소화 할 때 사용할 수있는 추가 기능이 있습니까?

AutoIt 가져 오기를 사용하여 수행 할 필요는 없습니다. 나는 한 지점에서 user32의 SendMessage을 시도했지만 플래시 컨텐츠를 전혀 사용하지 못했습니다.

난 그냥 대신 플래시 사이트 나 지뢰 찾기와 나는 AutoIt이 스크립트 프로그램 내에서 그것을 실행하면 코드가 작동 어떤 이유로,하지만 내 C# 프로그램에서의 임의의 웹 사이트에이 테스트

...

2012 년 6 월 20 일 : 저는 이것이 핸들이 전달되는 방식과 관련이 있다고 확신합니다. AutoIt EXE 파일을 호출하고 인수로 C# 코드에서 가져온 핸들을 사용하여 일부 테스트를 수행했습니다. 0x을 추가해야하며 AutoIt 코드 내에서 문자열에서 캐스팅해야합니다 그래서 뭔가가 될 수있는 HWnd, 그래서 내가 가져온 된 함수를 핸들에 대한 문자열 입력에 의존하기 때문에 어떻게 해야할지 모르겠다.

+0

어떻게 자동 함수를 C#으로 내 보냅니 까? 나는 단지 궁금하다. –

+0

http://www.lancelarsen.com/Blog/tabid/72/EntryId/48/AutoIt-C-Helper-Library.aspx 누군가가 DLL 라이브러리에서 함수를 가져 오는 클래스를 만든 ressources가있는 사이트입니다. 그러나 나는 도서관을 포함 시키면 그가 만든 수업을 반드시 사용할 필요는 없다고 생각합니다. 그의 도우미 클래스는 모든 함수를 수입으로 포함하고 있지 않으므로 어쨌든 모든 자동 메소드에 액세스 할 수 있기 때문에 그렇게 말합니다. –

답변

3

윈도우 핸들 및 변수 처리 문제를 배제하려고 할 수 있습니다. WinGetTitle을 사용할 필요가 없어야합니다. "Minesweeper"창 제목이 제대로 작동해야합니다. Windows 7의 AutoIt v3 Window Info 도구에 따르면 Minesweeper 창의 제목과 클래스는 모두 Minesweeper입니다. 열심히

auto.ControlClick 코딩 (:, ",", "왼쪽", ""[지뢰 CLASS TITLE 지뢰를, "2 R * 10, 10 * R)

는 작동 할 수 있습니다. 더 들어 AutoIt이 도움말 파일에을 고급 창 설명 참조 작동하는 방법. 도움말 파일에서 최대 이 여전히 작동하지 않는 모습 WinTitleMatchMode가. 그것은 당신이 몇 가지 규칙을 설정할 수 있도록 허용하는 경우 너를 쉽게 할 수있는 창 제목 일치에 관대함.

AutoIt X는 AutoIt의 DLL/COM 제어 버전입니다. DLL/COM을 지원하는 모든 언어에 AuotIt을 추가하는 방법입니다. 다른 사람이 궁금해하는 경우에 how you would use AutoIt in C#. 불행히도 AutoIt X는 주 언어의 개발 및 테스트에 뒤쳐져 있습니다. 문제가 AutoItX 프로젝트에 대한 배경 지식을주는 버그로 인한 것이라고 생각할 이유는 없습니다. 아직 질문이없는 경우 ActiveX/COM Help and Support (AutoItX) 포럼에이 질문의 사본을 게시해야합니다. 지난 수년간 내 경험에 비추어 볼 때 AutoIt에 대한 가장 좋은 점은 커뮤니티 (여기서는별로 움직이지 않았 음)입니다. 포럼의 특정 섹션은 도움을 줄 수있는 언어 개발자 중 일부가 자주 방문합니다.

6 월 20 일에 유의하십시오. AutoIt은 문자열이 모든 변수를 특별하게 감지 할 때까지 모든 변수를 처리합니다. 언급 한 0x로 시작하지 않으면 값이 16 진수라는 것을 알 수 없습니다. 이것은 과거에 나에게 여러 가지 이상한 문제를 일으켰다. 여러 번 AutoIt을 올바르게 평가하기 위해 변수에 0을 추가해야했습니다. 이것은 AutoIt3에서 자주 발생하는 것이 아니라 명심해야 할 사항입니다.

AutoIt forum have made Minesweeper bots의 많은 AutoIt 참조 코드가 필요하면 체크 아웃하고 도움이 될만한 것을 볼 수 있습니다.

+0

덕분에 그 자원을 확실히 조사 할 것입니다. 저는 지뢰 찾기를 사용하여 방금 배웠습니다. 그리고 이것은 여전히 ​​플래시 게임의 문제점을 해결하지 못합니다. 하지만 당신이 나에게 보여 줬던 것과 함께 좀 더 땜질을 할 것입니다 –

+0

잘 시간이 다가오고 있습니다. 그래서 나는 완전히 만족스럽지 않아도 현상금을 줄 것입니다. 클릭하는 방법을 찾고 싶었습니다. 웹 브라우저, 설명했던대로 이미 지뢰 찾기에서 처리 할 수 ​​있습니다. 하지만 사용 가능한 답변은 최고였습니다. –

1

C# 프로그램을 admin으로 실행하고 있는지 확인하십시오. 이것은 내가 작동하는 한 가지 방법과 다른 방법으로 볼 수있는 유일한 차이점입니다.

관련 문제