私は別のアプリケーションの複数の、または特定のテキストボックス/コントロールからテキストを取得しようとしています。複数のテキストボックスからテキストを取得する方法は、別のプログラムを制御します。 C#WM_GETTEXT
ここにあるコードは動作し、label2.textにテキストボックステキストを表示します。
しかし、私が必要とするテキストボックスから値を読み取っていません。すべてのテキストボックスクラス名は "WindowsForms10.EDIT.app.0.141b42a_r12_ad1"です。だから、どのように特定のボックスを読むのですか?
また、アプリケーションが再オープンされるたびにハンドルが変更されます。しかし、クラス名はありません。
解決策がある場合は、サンプルがうまくいくはずです。
おかげ
IntPtr Hwnd = FindWindow(null, "Software - Name");
IntPtr Handle = Marshal.AllocHGlobal(100);
int NumText = (int)SendMessage(Hwnd, WM_GETTEXT, (IntPtr)50, Handle);
string Text = Marshal.PtrToStringUni(Handle);
label1.Text = Text;
IntPtr ChildHandle = FindWindowEx(Hwnd, IntPtr.Zero, "WindowsForms10.EDIT.app.0.141b42a_r12_ad1", "");
IntPtr Hndl = Marshal.AllocHGlobal(200);
NumText = (int)SendMessage(ChildHandle, WM_GETTEXT, (IntPtr)200, Hndl);
Text = Marshal.PtrToStringUni(Hndl);
label2.Text = Text;
これらのウィンドウクラス名は自動生成され、プログラムが実行されるたびに変更されます。だからあなたはヒットしたいテキストボックスを識別するためにそれらを使用することはできません。親からの相対的なボックスの位置は、通常、次善策です。しかし、これをしないで、System.Windowsを使用してください。代わりにオートメーション。 –