2009-05-09 30 views
6

Tôi đang tạo bot cho trò chơi Flash và tôi đã tìm cách nhập tất cả các hàm AutoIt vào mã C# của mình.Gửi tin nhắn đến một trò chơi Flash với C# và 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); 
} 

(Tôi chắc rằng một trong những không chú thích nên một với tay cầm và ngược lại, nhưng hoạt động này cho Minesweeper.)

Vì vậy, nó làm việc cho Minesweeper và không đòi hỏi nó phải cửa sổ đang hoạt động. Khi tôi cố gắng làm cho nó hoạt động trên trò chơi Flash của tôi, nó yêu cầu cửa sổ Internet   Explorer hoạt động. Đây có phải là thứ gì đó mà Flash yêu cầu hoặc có thêm điều gì đó mà tôi có thể làm để làm cho nó hoạt động khi trò chơi được thu nhỏ không?

Điều này không phải thực hiện bằng cách sử dụng tính năng nhập AutoIt. Tôi đã thử SendMessage từ user32 tại một thời điểm, nhưng điều đó không làm việc cho nội dung Flash cho tôi.

tôi chỉ thử nghiệm này trên một trang web ngẫu nhiên thay vì một trang web Flash hay Minesweeper và đối với một số lý do mã hoạt động nếu tôi thực hiện nó từ bên trong chương trình kịch bản AutoIt, nhưng không phải từ chương trình C# của tôi ...

ngày 20 tháng 6 năm 2012: Tôi khá chắc chắn điều này có liên quan đến cách xử lý. Tôi đã thực hiện một số thử nghiệm với gọi một tập tin AutoIt EXE và sử dụng xử lý tôi nhận được từ mã C# như một đối số, tôi phải thêm một 0x vào nó, và sau đó trong mã AutoIt tôi phải bỏ nó từ một chuỗi đến một HW, vì vậy mà có thể là một cái gì đó, trong trường hợp đó tôi không biết phải làm gì kể từ khi chức năng nhập khẩu dựa trên một đầu vào chuỗi cho xử lý.

+0

Bạn đã xuất các hàm tự động sang C# như thế nào? Tôi chỉ tò mò thôi. –

+0

http://www.lancelarsen.com/Blog/tabid/72/EntryId/48/AutoIt-C-Helper-Library.aspx Có một trang web với các tài nguyên mà ai đó đã tạo một lớp nhập các hàm từ thư viện DLL. Nhưng tôi nghĩ rằng nếu bạn chỉ cần bao gồm các thư viện bạn không nhất thiết cần phải sử dụng lớp học mà ông đã thực hiện. Tôi nói rằng bởi vì lớp helper của ông không bao gồm tất cả các chức năng như nhập khẩu nhưng bạn có thể truy cập tất cả các phương thức autoit anyways. –

Trả lời

3

Điều gì đó bạn có thể muốn loại trừ xử lý cửa sổ và các vấn đề xử lý biến. Không nên sử dụng WinGetTitle tiêu đề cửa sổ "Minesweeper" sẽ hoạt động tốt. Theo công cụ AutoIt v3 Window Info của tôi trong Windows 7, tiêu đề và lớp của cửa sổ Minesweeper đều là Minesweeper. Vì vậy, cứng mã hóa

auto.ControlClick ("[TITLE: Minesweeper; CLASS: Minesweeper], "", "", "trái", 2, r * 10, r * 10);

có thể làm việc. để biết thêm về cách làm việc thấy nâng cao Window Mô tả trong file AutoIt giúp đỡ. Nếu đây nhìn vẫn không hoạt động lên WinTitleMatchMode trong file giúp đỡ. Nó cho phép bạn thiết lập một số quy tắc cho khoan dung trong khớp nối tiêu đề cửa sổ có thể làm cho điều này dễ dàng hơn cho bạn.

AutoIt X là phiên bản điều khiển DLL/COM của AutoIt, đó là cách bạn thêm AuotIt vào bất kỳ ngôn ngữ nào có hỗ trợ DLL/COM. Trong trường hợp bất cứ ai khác đang tự hỏi how you would use AutoIt in C#. Thật không may AutoIt X thường chậm lại trong phát triển và thử nghiệm từ ngôn ngữ chính. Mặc dù không có lý do để nghĩ rằng vấn đề của bạn là do một lỗi chỉ đưa ra một số nền tảng về dự án AutoItX. Nếu bạn chưa đăng, bạn nên đăng một bản sao của câu hỏi này lên diễn đàn ActiveX/COM Help and Support (AutoItX). Một trong những điều tốt nhất về AutoIt trong kinh nghiệm của tôi trong những năm qua là cộng đồng (đã không di chuyển ở đây nhiều). Phần diễn đàn cụ thể đó thường xuyên được một số nhà phát triển ngôn ngữ thường xuyên sẵn lòng trợ giúp.

Với số ghi chú ngày 20 tháng 6 của bạn, AutoIt xử lý tất cả các biến như chuỗi cho đến khi phát hiện có gì đó đặc biệt. Nó không biết giá trị là hex trừ khi nó bắt đầu với 0x bạn đã đề cập. Điều này đã gây ra tất cả các loại vấn đề kỳ lạ đối với tôi trong quá khứ. Tôi có nhiều lần phải thêm số không vào một biến để có được AutoIt để đánh giá nó một cách chính xác sau. Điều này không xảy ra thường xuyên với AutoIt3 nhưng chỉ cần một cái gì đó để ghi nhớ.

Nếu bạn cần bất kỳ mã tham chiếu AutoIt nào của các thành viên trong số AutoIt forum have made Minesweeper bots bạn có thể xem và có thể thấy điều gì đó hữu ích.

+0

cảm ơn tôi chắc chắn sẽ xem xét các tài nguyên đó Tôi chỉ đang sử dụng tàu quét mìn để tìm hiểu, và điều này vẫn không giải quyết được vấn đề của tôi về trò chơi flash. Nhưng tôi sẽ làm một số tinkering hơn với những gì bạn đã chỉ cho tôi –

+0

cũng thời gian chỉ là về lên, vì vậy tôi cho bạn tiền thưởng mặc dù tôi không hoàn toàn hài lòng Tôi đã hy vọng tìm hiểu làm thế nào để bấm vào một webbrowser, tôi đã có thể làm điều đó trong tàu quét mìn như tôi giải thích Nhưng của bạn là tốt nhất của câu trả lời có sẵn cảm ơn bạn –

1

Đảm bảo rằng bạn đang chạy chương trình C# dưới dạng quản trị viên. Đây là sự khác biệt duy nhất tôi có thể thấy cho một phương pháp làm việc và khác không.

Các vấn đề liên quan