2009-05-09 14 views
6

私はFlashゲームのボットを作っています。AutoItのすべての関数をC#コードにインポートする方法を知りました。C#とAutoItを使ってFlashゲームにメッセージを送信する

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); 
} 

(私はコメントのない1は、ハンドルとその逆であるべきであるかなり確信しているが、これはMinesweeperのために働く。)

だから、マインスイーパのために働くとすることを必要としません。アクティブなウィンドウ私がそれを私のフラッシュゲームで動かそうとすると、インターネット エクスプローラウィンドウがアクティブになる必要があります。これにはFlashに必要なものがありますか、ゲームが最小限に抑えられたときに動作させるために追加できるものがありますか?

これは、AutoItインポートを使用して行う必要はありません。私は一度にuser32のSendMessageを試してみましたが、それは私のためにFlashコンテンツではうまくいきませんでした。

私はだけではなく、Flashサイトや掃海艇と私は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、R * 10);

が働くかもしれない。作品は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が正しく評価されるためには、変数にゼロを追加する必要がありました。これはAutoIt3では頻繁に起こるのではなく、何かを覚えておいてください。

AutoIt forum have made Minesweeper botsのメンバーがたくさんあるAutoItリファレンスコードが必要な場合は、チェックアウトして参考になるかもしれません。

+0

ありがとう私は間違いなくそれらのressourcesを調べます 私はちょうど勉強に掃海を使用していた、これはまだフラッシュゲームの私の問題を解決しません。しかし、私はあなたが私に示されているものを使っていくつかのことをやり直すでしょう –

+0

私は十分に満足していなくても、恵まれた時間を与えてくれるので、私はあなたに賞金をあげています 私が説明したように、私はすでに掃海艇でそれを行うことができました しかし、あなたのものは利用可能な答えの中で最高でした –

1

C#プログラムを管理者として実行していることを確認してください。これは、私が見ることができる唯一の違いは、1つのメソッドが動作していて、もう1つは動作していないことです

関連する問題