ボタンやマウスクリックの傍受による自動化。 - ページ 5 123456789101112 新しいコメント Виктор 2008.11.15 18:47 #41 xeon >> : 良い端末でした : -))) 誰しもが持っている端末です。しかも、ある意味赤いボタンが入っている。 自分の頭を警棒で叩くのは自分だけでいい。:)) Nefedov Kirill 2008.11.15 18:53 #42 イルナー ボタンのテキストも何とか読み取ることができます。それをSpy++のプログラムが読み取る。 つまり、ボタンが「停止」に設定されている間は、次のアクションが実行されるのを待つというロジックです。 User32.dllから、ボタンのテキストを正しく引き出す関数を教えてください。 GetDlgItemText関数 説明 function GetDlgItemText(Dlg: HWnd; IDDlgItem: Integer; Str: PChar; MaxCount: Integer): Integer; コントロールのテキストを読み取ります。 パラメータ Dlg:ダイアログボックスの識別子です。 IDDlgItem: アイテムのID。 Str: テキストを受信するバッファ。 MaxCount: バッファーのサイズ。 戻り値です。 実際にコピーされた文字数。 #import "user32.dll" 文字列 GetDlgItemText (int hWnd, int IDDlgItem, string PChar, int MaxCount)。 #インポート 機能の接続は正しいですか? ターミナルでログに表示されるから 2008.11.15 21:03:41 tester EURUSD,H1: 関数 'GetDlgItemText' を dll 'user32.dll' から呼び出すことができません (エラー 127)。 Automation with button and メタトレーダー5の EA の自動最適化 トレーダーのライフハック: テストの比較レポート Nefedov Kirill 2008.11.15 19:06 #43 xeon >> : 良い端末でしたね : -))) Xeon、お前が元凶だろうが...。 私自身はそのステップには進まなかっただろうが...。が、その必要はないのだが......。 Ilnur Iksanov 2008.11.15 19:27 #44 HIDDEN >> : . . . #import "user32.dll" 文字列 GetDlgItemText (int hWnd, int IDDlgItem, string PChar, int MaxCount)。 #インポート 機能の接続は正しいですか? ターミナルでログに表示されるから 2008.11.15 21:03:41 tester EURUSD,H1: 関数 'GetDlgItemText' を dll 'user32.dll' から呼び出すことができません (エラー 127)。 どちらかというと、このような感じです。. . #import "user32.dll" int GetDlgItemTextA(int hWnd, int IDDlgItem, string PChar, int MaxCount); #import Nefedov Kirill 2008.11.15 19:38 #45 Ilnur >> : >>こういった感じです。. . これは整数を返しますが、ボタンのテキストが必要です。 Ilnur Iksanov 2008.11.15 19:44 #46 HIDDEN >> : これは整数の数値を返しますが、ボタンのテキストが必要です。 テキストは PChar 文字列バッファで返される。 この関数自体は、実際に読み取った文字数を返します。 Ilnur Iksanov 2008.11.15 19:45 #47 HIDDEN >> : イルナー ボタンのテキストも何とか読み取ることができます。それをSpy++のプログラムが読み取る。 以下は、ストラテジーテスターを起動し、その完了を待つスクリプトの例です。ボタンのテキストは、GetWindowTextA() を使って読み取ります。 興味深いことに、この場合、テスターウィンドウは必ずしも表示されている必要はありません。 #include <WinUser32.mqh> #import "user32.dll" int GetAncestor(int hWnd, int gaFlags); int GetDlgItem(int hDlg, int nIDDlgItem); #import void start() { int hMetaTrader, hTerminal, hTester, hButtonStart; hMetaTrader = GetAncestor(WindowHandle(Symbol(),Period()),2); //дескриптор основного окна терминала hTerminal = GetDlgItem(hMetaTrader,0xE81E); hTester = GetDlgItem(hTerminal,0x53); hButtonStart = GetDlgItem(GetDlgItem(hTester,0x81BF),0x40A); //дескриптор кнопки "Старт" PostMessageA(GetDlgItem(hTester,0x81BF),WM_COMMAND,0x40A,hButtonStart); //нажимаем кнопку старт Print("Запуск тестера стратегий"); string sButtonStartName = ""; while(!IsStopped()) { Sleep(3000); GetWindowTextA(hButtonStart,sButtonStartName,6); //считываем текст кнопки запуска тестера if(sButtonStartName=="Старт") { Print("Работа тестера завершена"); break; } } } Nefedov Kirill 2008.11.15 19:52 #48 Ilnur >> : 以下は、ストラテジーテスターを起動し、その完了を待つスクリプトの例です。ボタンのテキストは、GetWindowTextA() を使って読み取ります。 興味深いことに、テスターウィンドウは表示されている必要はありません。 ありがとうございました。せめて、これらの機能についての説明や、使い方の例を見るにはどうしたらいいでしょうか?ネットで探しまくっているが、あまり参考にならない。Win APIの良い本があるのでは?その機能が何をするものなのかがわかるだけの説明では、まだ十分ではありません。 Ilnur Iksanov 2008.11.15 20:01 #49 HIDDEN >> : ありがとうございました。せめて、これらの機能についての説明や、使い方の例を見るにはどうしたらいいでしょうか?ネットで探しまくっているが、あまり参考にならない。Win APIの良い本があるのでは?この機能が何をするものなのか、簡単な説明では不十分な場合があります。 WinAPI関数に関する情報は、すべてMSDNから得ています。私はこの方法で慣れています。 P.S. WinAPIの良い本は、残念ながら見たことがありません。 Nefedov Kirill 2008.11.15 20:22 #50 Ilnur >> : WinAPI関数の情報は、すべてMSDNから得ています。私はもっと慣れている. P.S. 残念ながら、WinAPIに関する良い本を見たことがありません。 マウスの第1ボタンで開くメニューは、どのように横取りされるのですか?ターミナルから他のプログラムに切り替えると、メニューが消えてしまい、どうしても捕捉できない。プログラムを停止する方法はありますか? 123456789101112 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
良い端末でした : -)))
誰しもが持っている端末です。しかも、ある意味赤いボタンが入っている。
自分の頭を警棒で叩くのは自分だけでいい。:))
イルナー ボタンのテキストも何とか読み取ることができます。それをSpy++のプログラムが読み取る。
つまり、ボタンが「停止」に設定されている間は、次のアクションが実行されるのを待つというロジックです。
User32.dllから、ボタンのテキストを正しく引き出す関数を教えてください。
GetDlgItemText関数
説明
function GetDlgItemText(Dlg: HWnd; IDDlgItem: Integer; Str: PChar; MaxCount: Integer): Integer;
コントロールのテキストを読み取ります。
パラメータ
Dlg:ダイアログボックスの識別子です。
IDDlgItem: アイテムのID。
Str: テキストを受信するバッファ。
MaxCount: バッファーのサイズ。
戻り値です。
実際にコピーされた文字数。
#import "user32.dll"
文字列 GetDlgItemText (int hWnd, int IDDlgItem, string PChar, int MaxCount)。
#インポート
機能の接続は正しいですか?
ターミナルでログに表示されるから
2008.11.15 21:03:41 tester EURUSD,H1: 関数 'GetDlgItemText' を dll 'user32.dll' から呼び出すことができません (エラー 127)。
良い端末でしたね : -)))
Xeon、お前が元凶だろうが...。
私自身はそのステップには進まなかっただろうが...。が、その必要はないのだが......。
. . .
#import "user32.dll"
文字列 GetDlgItemText (int hWnd, int IDDlgItem, string PChar, int MaxCount)。
#インポート
機能の接続は正しいですか?
ターミナルでログに表示されるから
2008.11.15 21:03:41 tester EURUSD,H1: 関数 'GetDlgItemText' を dll 'user32.dll' から呼び出すことができません (エラー 127)。
>>こういった感じです。. .
これは整数を返しますが、ボタンのテキストが必要です。
これは整数の数値を返しますが、ボタンのテキストが必要です。
テキストは PChar 文字列バッファで返される。
この関数自体は、実際に読み取った文字数を返します。
イルナー ボタンのテキストも何とか読み取ることができます。それをSpy++のプログラムが読み取る。
以下は、ストラテジーテスターを起動し、その完了を待つスクリプトの例です。ボタンのテキストは、GetWindowTextA() を使って読み取ります。
興味深いことに、この場合、テスターウィンドウは必ずしも表示されている必要はありません。
以下は、ストラテジーテスターを起動し、その完了を待つスクリプトの例です。ボタンのテキストは、GetWindowTextA() を使って読み取ります。
興味深いことに、テスターウィンドウは表示されている必要はありません。
ありがとうございました。せめて、これらの機能についての説明や、使い方の例を見るにはどうしたらいいでしょうか?ネットで探しまくっているが、あまり参考にならない。Win APIの良い本があるのでは?その機能が何をするものなのかがわかるだけの説明では、まだ十分ではありません。
ありがとうございました。せめて、これらの機能についての説明や、使い方の例を見るにはどうしたらいいでしょうか?ネットで探しまくっているが、あまり参考にならない。Win APIの良い本があるのでは?この機能が何をするものなのか、簡単な説明では不十分な場合があります。
WinAPI関数に関する情報は、すべてMSDNから得ています。私はこの方法で慣れています。
P.S. WinAPIの良い本は、残念ながら見たことがありません。
WinAPI関数の情報は、すべてMSDNから得ています。私はもっと慣れている.
P.S. 残念ながら、WinAPIに関する良い本を見たことがありません。
マウスの第1ボタンで開くメニューは、どのように横取りされるのですか?ターミナルから他のプログラムに切り替えると、メニューが消えてしまい、どうしても捕捉できない。プログラムを停止する方法はありますか?