ボタンやマウスクリックの傍受による自動化。 - ページ 7 123456789101112 新しいコメント Ilnur Iksanov 2008.11.16 10:23 #61 HIDDEN >> : 面白い窓を発見。その中で何かをキャッチすることは、ほとんど不可能です。名前を付けて保存」というウィンドウが表示されます。保存」ボタンの押し方を教えてください。 特に保存ボタンを選択した場合は、ボタンコード00000001となります しかし、このコードで呼び出しても何も起こりません。この名もなきウィンドウは何ですか? ポップアップダイアログボックスです。そのシステムディスクリプタは、WinAPI関数GetLastActivePopup(int hWnd)で取得することができます。 以下に、この機能の使用例を示します。 #include <WinUser32.mqh> #import "user32.dll" int GetAncestor(int hWnd, int gaFlags); int GetDlgItem(int hDlg, int nIDDlgItem); int GetLastActivePopup(int hWnd); #import void start() { int hMetaTrader, hDlg, hButtonSave, hChart = WindowHandle(Symbol(),Period()); hMetaTrader = GetAncestor(hChart,2); //дескриптор основного окна терминала PostMessageA(hMetaTrader,WM_COMMAND,57604,0); //вызываем окно сохранения Sleep(100); hDlg = GetLastActivePopup(hMetaTrader); //получаем дескриптор всплывающего окна hButtonSave = GetDlgItem(hDlg,1); //определяем дескриптор кнопки "Сохранить" PostMessageA(hDlg,WM_CO MMAND,1,hButtonSave); //нажимаем на кнопку } Nefedov Kirill 2008.11.16 14:41 #62 チェックボックスがない場合は、プログラムによりチェックを入れることができます。 そのために使用されるWin API関数を教えてください。 Nefedov Kirill 2008.11.27 11:28 #63 WinAPIに関数を発見。CheckDlgButton機能 説明: function CheckDlgButton(Dlg: HWnd; IDButton: Integer; Check: Word)。 ボタンコントロールにマークを付けたり外したり、3ボタンコントロールの状態を変更します。 Parameters: Dlg: ボタンが含まれるダイアログボックス。 IDButton: ボタンの変更可能なコントロール。 チェック項目:削除(0)、マーク(1)、網掛け(2)。実行する前に、ボタンの 状態を確認する機能はどれですか?私の場合はチェックボックスの中に入っています。 Yuriy Zaytsev 2008.12.31 01:35 #64 Ilnur >> : APIをテーマにした 保存するとき - もしこれが再び起こるなら、疑問が生じます! セーブ・アズ ( file exists replace ) 自動的にYESとなる #include <WinUser32.mqh> #import "user32.dll" int GetAncestor(int hWnd, int gaFlags); int GetDlgItem(int hDlg, int nIDDlgItem); int GetLastActivePopup(int hWnd); #import void start() { int hMetaTrader, hDlg, hButtonSave, hChart = WindowHandle(Symbol(),Period()); hMetaTrader = GetAncestor( hChart,2); //дескриптор основного окна терминала PostMessageA( hMetaTrader, WM_COMMAND,57604,0); //вызываем окно сохранения Sleep(100); hDlg = GetLastActivePopup( hMetaTrader); //получаем дескриптор всплывающего окна hButtonSave = GetDlgItem( hDlg,1); //определяем дескриптор кнопки "Сохранить" PostMessageA( hDlg, WM_COMMAND,1, hButtonSave); //нажимаем на кнопку , Sleep(100); // и тут может возникнуть еще один диалог ФАЙЛ СУЩЕСТВУЕТ - сохранять ДА НЕТ int hDlg1 = GetLastActivePopup( hMetaTrader); // получаем дескриптор всплывающего окна СОХРАНЯТЬ ИЛИ НЕТ int hButtonYES = GetDlgItem( hDlg1,6); // определяем дескриптор кнопки ДА ID кнопки ДА он равен = 6 PostMessageA( hDlg1, WM_COMMAND,6, hButtonYES); // мы подтверждаем ДА } Yuriy Zaytsev 2009.01.01 19:42 #65 HIDDEN >> : WinAPIに関数を発見。 CheckDlgButton機能 説明 function CheckDlgButton(Dlg: HWnd; IDButton: Integer; Check: Word); ボタンコントロールにラベルを貼ったり、チェックを外したり、3ボタンコントロールの状態を変更したりします。 パラメータ Dlg:ボタンを含むダイアログボックス。 IDButton: ボタンの変更可能なコントロール。 チェックした項目:削除(0)、マーク(1)、影付き(2)。 実行する前に、どの関数を使用してボタンの状態を確認するか。私の場合はチェックボックスで。 IsDlgButtonChecked関数で、スイッチの現在の状態を判断することができます。 UINT WINAPI IsDlgButtonChecked(HWND hdlg, int idButton); この関数は、hdlgダイアログボックスにあるidButtonのスイッチの状態を返します。スイッチが無効状態の場合、NULL値を返す。スイッチがオンの場合、値1が返される。2は非アクティブなスイッチに相当し、グレーで表示されます。エラーの場合は、負の値である-1を返す。 --- IsDlgButtonCheckedの動作例はこちらでご覧いただけます。 http://frolov-lib.ru/books/bsp/v12/ch3_2.htm Nefedov Kirill 2009.04.30 05:21 #66 WinAPIの勉強のテーマに戻ることにした。 Microsoft Spy++ v.9.00.21022 を使って、「最適化」チェックボックスの識別子を探し、チェックが入っているかどうかを確認しようとしています。 私は次のようなステップを踏んでいます。 1.端末を起動。 2.テスターウィンドウを開いた。 3.Spy++でウィンドウを探し、「Optimize」要素を指しました。 OKボタンをクリック。 4.次のウィンドウのタブを実行する このボタンのコードがどこにあるのかわかりません。 Ilnurや YuraZなどは、私が必要とするこのディスクリプタコードを特定するために教えてくれて います。 なぜ教えを乞うかというと、具体的にコードを指し示すのではなく、他の要素を見極める力を身につけたいからです。とはいえ、指定しておけば、どこで何を探せばいいのかがわかって、後で探しやすいかもしれませんが......。 Ilnur Iksanov 2009.04.30 16:11 #67 ここでは、「スタート」ボタンの識別子を求めるコード例を示しました。 同図は、コントロールの識別子を見つける方法を示しています。 ストラテジーテスターウィンドウにあるすべてのコントロールは、同じように定義されます。 例えば、上の図によると、「最適化」チェックボックス(「一般」タブ)の識別子は、0x405です。 Nefedov Kirill 2009.04.30 16:19 #68 コードの整理ができた。ただ、2つのボタンのコードが見つからないのは、テストと最適化の日付を「日付」から「年月日」にしていることです。プログラムは、00000001を出力します。イルナーは、これらのボタンのコードを教えてください。 Ilnur Iksanov 2009.05.02 17:31 #69 HIDDEN >> : 整理してみました。ただ、テスト用の日付と「日付」から「日付」への最適化の2つのボタンのコードが見つからない。プログラム出力 00000001イルナーは、これらのボタンのコードを教えてください。 はい、確かに、これらのアイテムの識別子は同じです。したがって、この場合、GetDlgItem()を使用することはできません。 このため、FindWindowExA()を使って特定するオプションが残されています。しかし、本題は「特定する必要があるのか」ということです。 これらの項目は、MQLのWinAPIで最適化やテスト期間の指定などの管理をすることはできません。 間違っているかもしれませんが。 Yuriy Zaytsev 2009.05.02 18:22 #70 Ilnur >> : はい、確かに、これらのアイテムの識別子は同じです。したがって、この場合、GetDlgItem()を使用することはできません。 このため、FindWindowExA()を使って特定するオプションが残されています。しかし、本題は「特定する必要があるのか」ということです。 これらの項目は、MQLのWinAPIによって最適化やテスト期間を指定するなど、管理できる可能性がありません。 でも、私が間違っているかもしれません。 ID - 0x0577 のアイテムを見つける(Change Expert ボタンをクリック)。 をクリックし、NextWindowを3回クリックすると、Fromの日付フィールドに入ります。次にNextWindowをさらに2回クリックすると、Toの日付フィールドに入ります。 どちらの場合も、日付フィールドを埋めるだけです。 SetWindowTextA( hwndEditDATEbeg, sDateBeg ) を実行します。 SendMessageA(hwndEditDATEbeg, EN_UPDATE, _ID_EDIT_HEX_DATEbeg, 0)を実行。 SendMessageA(hwndEditDATEbeg, EN_CHANGE, _ID_EDIT_HEX_DATEbeg, 0)を送信します。 .. MSQL5では、テスターとのコミュニケーションのためのツールをぜひ内蔵してもらいたいのですが...。 123456789101112 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
面白い窓を発見。その中で何かをキャッチすることは、ほとんど不可能です。名前を付けて保存」というウィンドウが表示されます。保存」ボタンの押し方を教えてください。
特に保存ボタンを選択した場合は、ボタンコード00000001となります
しかし、このコードで呼び出しても何も起こりません。この名もなきウィンドウは何ですか?
ポップアップダイアログボックスです。そのシステムディスクリプタは、WinAPI関数GetLastActivePopup(int hWnd)で取得することができます。
以下に、この機能の使用例を示します。
チェックボックスがない場合は、プログラムによりチェックを入れることができます。
そのために使用されるWin API関数を教えてください。
WinAPIに関数を発見。
CheckDlgButton機能
説明:function CheckDlgButton(Dlg: HWnd; IDButton: Integer; Check: Word)。
ボタンコントロールにマークを付けたり外したり、3ボタンコントロールの状態を変更します。
Parameters:Dlg: ボタンが含まれるダイアログボックス。
IDButton: ボタンの変更可能なコントロール。
チェック項目:削除(0)、マーク(1)、網掛け(2)。
実行する前に、ボタンの 状態を確認する機能はどれですか?私の場合はチェックボックスの中に入っています。
APIをテーマにした
保存するとき - もしこれが再び起こるなら、疑問が生じます!
セーブ・アズ
( file exists replace )
自動的にYESとなる
WinAPIに関数を発見。
CheckDlgButton機能
説明function CheckDlgButton(Dlg: HWnd; IDButton: Integer; Check: Word);
ボタンコントロールにラベルを貼ったり、チェックを外したり、3ボタンコントロールの状態を変更したりします。
パラメータDlg:ボタンを含むダイアログボックス。
IDButton: ボタンの変更可能なコントロール。
チェックした項目:削除(0)、マーク(1)、影付き(2)。
実行する前に、どの関数を使用してボタンの状態を確認するか。私の場合はチェックボックスで。
IsDlgButtonChecked関数で、スイッチの現在の状態を判断することができます。
この関数は、hdlgダイアログボックスにあるidButtonのスイッチの状態を返します。スイッチが無効状態の場合、NULL値を返す。スイッチがオンの場合、値1が返される。2は非アクティブなスイッチに相当し、グレーで表示されます。エラーの場合は、負の値である-1を返す。
---
IsDlgButtonCheckedの動作例はこちらでご覧いただけます。
http://frolov-lib.ru/books/bsp/v12/ch3_2.htm
WinAPIの勉強のテーマに戻ることにした。
Microsoft Spy++ v.9.00.21022 を使って、「最適化」チェックボックスの識別子を探し、チェックが入っているかどうかを確認しようとしています。
私は次のようなステップを踏んでいます。
1.端末を起動。
2.テスターウィンドウを開いた。
3.Spy++でウィンドウを探し、「Optimize」要素を指しました。
OKボタンをクリック。
4.次のウィンドウのタブを実行する
このボタンのコードがどこにあるのかわかりません。
Ilnurや YuraZなどは、私が必要とするこのディスクリプタコードを特定するために教えてくれて います。
なぜ教えを乞うかというと、具体的にコードを指し示すのではなく、他の要素を見極める力を身につけたいからです。とはいえ、指定しておけば、どこで何を探せばいいのかがわかって、後で探しやすいかもしれませんが......。
ここでは、「スタート」ボタンの識別子を求めるコード例を示しました。
同図は、コントロールの識別子を見つける方法を示しています。
ストラテジーテスターウィンドウにあるすべてのコントロールは、同じように定義されます。
例えば、上の図によると、「最適化」チェックボックス(「一般」タブ)の識別子は、0x405です。
整理してみました。ただ、テスト用の日付と「日付」から「日付」への最適化の2つのボタンのコードが見つからない。プログラム出力 00000001イルナーは、これらのボタンのコードを教えてください。
はい、確かに、これらのアイテムの識別子は同じです。したがって、この場合、GetDlgItem()を使用することはできません。
このため、FindWindowExA()を使って特定するオプションが残されています。しかし、本題は「特定する必要があるのか」ということです。
これらの項目は、MQLのWinAPIで最適化やテスト期間の指定などの管理をすることはできません。
間違っているかもしれませんが。
はい、確かに、これらのアイテムの識別子は同じです。したがって、この場合、GetDlgItem()を使用することはできません。
このため、FindWindowExA()を使って特定するオプションが残されています。しかし、本題は「特定する必要があるのか」ということです。
これらの項目は、MQLのWinAPIによって最適化やテスト期間を指定するなど、管理できる可能性がありません。
でも、私が間違っているかもしれません。
ID - 0x0577 のアイテムを見つける(Change Expert ボタンをクリック)。
をクリックし、NextWindowを3回クリックすると、Fromの日付フィールドに入ります。次にNextWindowをさらに2回クリックすると、Toの日付フィールドに入ります。
どちらの場合も、日付フィールドを埋めるだけです。
SetWindowTextA( hwndEditDATEbeg, sDateBeg ) を実行します。
SendMessageA(hwndEditDATEbeg, EN_UPDATE, _ID_EDIT_HEX_DATEbeg, 0)を実行。
SendMessageA(hwndEditDATEbeg, EN_CHANGE, _ID_EDIT_HEX_DATEbeg, 0)を送信します。
..
MSQL5では、テスターとのコミュニケーションのためのツールをぜひ内蔵してもらいたいのですが...。