我想從另一個應用程序中的多個或特定文本框/控件中獲取文本。如何從多個文本框中獲取文本控制另一個程序。 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。自動化代替。 –