9

別のアプリケーションからメモリ値を読み取るプログラムを作成または使用したいと考えています。これを行うアプリケーション/ライブラリを知っている人はいますか?

対象アプリは こちらです。そこから為替レートの値を読み取りたいと思います。

私は経験豊富な C# プログラマーですが、Win32/user32 API を扱ったことはありません。

私を正しい方向に導く助けは大歓迎です。

更新: Spy++ を使用してウィンドウ ハンドルを取得できたので、何らかの方法で値を取得できると確信しています。

4

5 に答える 5

3

AutoITまたはAutoHotKeyを調べましたか? これらのオープン ソース オプションは両方とも、アプリケーション ウィンドウからテキストを読み取る (そして、キーストロークまたはマウス クリックをウィンドウに送信する) 機能が十分に文書化されています。

AutoIT は非常に使いやすく、十分に文書化されています。ウィンドウからテキストを読み取る例は次のとおりです。

$text = WinGetText("title of window", "")
MsgBox(0, "Text read was:", $text)

これは、実行可能ファイルにコンパイルできます。

于 2009-08-03T23:44:04.697 に答える
2

通常、アプリケーションは、一貫した方法、同じ ID、同じ順序などでダイアログ内にコントロールを作成するため、プログラムでコントロールを見つけるのはかなり簡単です。Spy++を使用してコントロールの ID を見つけると、アプリケーションによって作成されたウィンドウで目的のコントロールを検索できます。問題のアプリに精通していないため、詳細を説明することはできませんが、Spy++が目的の値を示している場合、コードで値を取得することは難しくありません。

値が表示されるコントロールの種類は? 親ウィンドウのハンドルとコントロール ID を取得したら、GetDlgItemTextを使用して値を取得できますか? 親ウィンドウを取得するには、EnumWindowsを使用してみてください。

于 2009-08-03T23:41:05.327 に答える
1

スクリーンショットを自動化し、ocr プロセスを実行することで、データをスクレイピングする方が簡単かもしれません。それがあなたの目標なら。

関連する可能性のあるリンク:

于 2009-08-03T05:14:23.623 に答える
0

この記事が役立つかもしれません - http://msdn.microsoft.com/en-us/magazine/cc163617.aspx、しかしそれは普遍的ではなく、あなたの仕事のためにはForex API / Webサービスまたはネットワーク上で必要なデータをキャッチしようとします。

于 2009-08-03T07:19:27.487 に答える
0

ネイティブの Windows コントロールで作成されたものをスクリーン スクラップすることは可能です。その場合は、Spy++ を使用してコントロールを表示できるはずです。しかし、コントロールが「手作業で」実装され、それらをスクリーン スクラップする方法がない場合があります (たとえば、一部の Java グラフィック ツールキットはグラフィックを直接処理するため、1 日のすべての作業が外部からは無意味であったり、一部の Office メニューが実装されていたりします)。メニュー コントロールを使用しない)。

Windows アクセシビリティ API は、値をスクリーン スクラップするための可能な方法です。Windows に付属のスクリーン リーダーである「ナレーター」がターゲット アプリケーションを読み上げることができるかどうかを確認します。

于 2009-12-28T15:00:44.657 に答える