ボタンやマウスクリックの傍受による自動化。 - ページ 6

 
HIDDEN >> :

マウスの第1ボタンで開くメニューは、どのように横取りされるのですか?ターミナルから他のプログラムに切り替えると、メニューが消えてしまい、どうしても捕捉できない。どうにかしてプログラムをフリーズさせる必要があるのでは?

コンテキストメニューから多くの項目がWM_COMMANDのコードを持っています。

 
HIDDEN >> :

また、マウスの右ボタンで開くメニューをどのように遮断するのでしょうか。ターミナルから他のプログラムに切り替えると、メニューが消えてしまい、どうしても捕捉できない。もしかして、何らかの方法でプログラムを停止する必要があるのでしょうか?

Spy++ユーティリティを使用する場合は、問題ありません。

ソフトウェアで、ウィンドウの一覧から目的のウィンドウを選択します。Windows Message Interceptorを起動します(Spy -> Messages...)。

表示されたウィンドウでメッセージのフィルタリングを設定する([メッセージ]タブ)。


そして、調査対象のプログラムでは、メニューを右クリックしてユーティリティの表示内容を確認するなど、さまざまな操作を行うことができます。

 
Ilnur >> :

Spy++ユーティリティを使用する場合は、問題ありません。

ソフトウェアで、ウィンドウの一覧から目的のウィンドウを選択します。Windows Message Interceptorを起動します(Spy -> Messages...)。

表示されたウィンドウ(メッセージタブ)でメッセージフィルタを設定する。


その後、調査中のプログラムで右クリックメニューなどさまざまな操作を行い、ユーティリティの表示内容を確認することができます。

質問ですが、もしあなたがここに書かれていること全てにおいて素晴らしい知識をお持ちなら、なぜテスターを自動的に実行させ、最適化し、正しい変数を設定しないのでしょうか?

 

プログラムによるEnterキーの押し方

何か、うまくいかないんですよね。

入力 DOM_VK_ENTER 13 0x0D
 
HIDDEN >> :

あなたに質問です。もしあなたがここに書かれていること全てに精通しているのなら、なぜ自動テスターの実行、最適化、正しい変数の置換などをしないのでしょうか。

ここに並べたものは、すべてにおいて素晴らしい知識を持っているわけではありません。私はそんなことを主張したことはありません。


テスターをソフトウェアで制御することに興味はなかったんです。だから、そんなものは実装したくないんです。

このスレッドでWinAPI関数の使い方について技術的な質問がありましたので、私も参加させていただくことにしました。

 
   Print("Запуск тестера стратегий");
   string sButtonStartName = "";
   while(!IsStopped()) 
   {
      Sleep(3000);
      GetWindowTextA( hButtonStart, sButtonStartName,6); //считываем текст кнопки запуска тестера
      if( sButtonStartName=="Старт")                    
      {
         Print("Работа тестера завершена");
         break;
      }
   }

必要なのは

文字列 sButtonStartName="";

少なくとも長さ6(StringLen("Start")+1)、望ましくは長さ255文字で初期化すること。

そうでなければ、GetWindowTextAから sButtonStartNameが返された後、メモリ上の隣接する変数がゴミ箱に捨てられる。

隣のブランチの RestoreScriptsを使った私の例では、このままでは#defineで定義した文字列の値が変わってしまいます。

 
Erics >> :

必要なのは

文字列 sButtonStartName="";

少なくとも長さ6(StringLen("Start")+1)、望ましくは長さ255文字で初期化すること。

そうでなければ、GetWindowTextAからsButtonStartNameが返された後、メモリ上の隣接する変数がゴミ箱に捨てられる。

次のブランチの RestoreScriptsを使った私の例では、#defineで定義された文字列の値が、そうでない場合は変わってしまいます。

はい、これは正しいです。急いで書いていたので、この点を見落としていました。

 
Ilnur >> :

このスレッドでWinAPI関数の使い方について技術的な質問がありましたので、私も参加させていただくことにしました。

面白い窓を見つけました。その中で何かをキャッチすることは、ほとんど不可能です。名前を付けて保存」というウィンドウが表示されます。名前を付けて保存」ボタンの押し方を教えてください。



特に保存ボタンを選択した場合は、ボタンコード00000001を



しかし、このコードでアクセスしても何も起こりません。この「名前のない窓」は何ですか?

 
HIDDEN >> :

面白い窓を発見。その中で何かをキャッチすることは、ほとんど不可能です。名前を付けて保存」というウィンドウが表示されます。名前を付けて保存」ボタンの押し方を教えてください。


特に保存ボタンを選択した場合、ボタンコードは00000001となります


しかし、このコードでアクセスしても何も起こりません。この無名の窓はどんな窓なんだろう。

ダイアログはShell IIANMの標準的なものです。そして、「保存」ボタンは、ID_OKボタンのリブランディングです。

 
TheXpert >> :

ダイアログはShell IIANMの標準的なものです。そして、「保存」ボタンは、ID_OKボタンのリブランディングです。

OKボタンで訴えても無駄


PostMessageA(GetDlgItem(hTerminal,0x53),WM_COMMAND,IDOK,0);