2012-03-24 17 views
0

GUIオブジェクトを読み込んで変更できるようにGUIオブジェクトを取得したいとします。 これを行うために私が考えることができる唯一の方法は、注入(ここで注入はデータをたくさん取得し、私が望むものを返す)です。注射に関する私の問題は、私が簡単にそれをデバッグすることができず、何をすべきかを理解するのに時間がかかるということです。他のプロセスからGUIオブジェクトを取得する

私はGUIオブジェクトのハンドルを見つけることができますので、ReadProcessMemory()などを使用して別のプロセスでメモリを読み取ることができます。このようにして、GUIオブジェクトにビルドします。欲しいです?

答えて

2

あなたがそれらのGUIオブジェクトの内容を変更するなどSetWindowText()として、定期的なWin32 API関数を呼び出すことができ、(FindWindow()を参照してください)あなたは、適切な権限を持っていると、特定のGUIオブジェクトのウィンドウハンドル(HWND)を得るためにいくつかの方法を持っていると仮定すると、 。

しかし、これを行うと、他のプロセスのロジックが壊れる可能性があります。 GUIオブジェクトを所有するプロセスが何らかの情報をキャッシュし、その背後にあるソースを変更すると、目的の効果が得られないことがあります。

+0

SetWindowTextは、同じアプリケーション内のGUIオブジェクトに対してのみ機能しますか?また、私はこれを使用して必要なすべての情報を読むことができません。たとえば、コンボボックス内の項目のリストを取得できません。 – user1227708

+0

@ user1227708: 'WM_SETTEXT'を直接送信して、別のプログラムのテキストを変更します。 ComboBoxの内容を読み込むには、 'FindWindowEx'でハンドルを取得する必要があります(取得するにはクラス名を使用してください)。その後、私が知っている限り、通常のComboBoxマクロとメッセージの使用にはプロセス間の制限はありません。http://msdn.microsoft.com/en-us/library/windows/desktop/ff485897(v=vs) 85).aspx –

+0

@ user1227708:['PostMessage()'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms644944.aspx)を使用して明示的にメッセージを送信する必要があります。 ['PostThreadMessage()'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms644946.aspx)。 –

関連する問題