必须发送文本以聚焦其他应用程序的文本框
本文关键字:文本 其他 应用程序 聚焦 | 更新日期: 2023-09-27 17:50:21
我花了很多天的时间在c#中发送文本值到其他应用程序的聚焦文本框。
我的代码:IntPtr txtLot = FindWindowEx(orderdialog, new IntPtr(0), "Edit", null);
SendMessage(txtLot, WM_SETTEXT, 0, lot.ToString());
我想要两个选项中的任意一个。
选择1:我在spy++中发现了三个编辑控件。在上面的代码中,我只有第一个编辑控件。但是我需要得到第二个编辑控制值的IntPtr来发送一些字符串。
选择2:我们可以使用tab键来聚焦第二个编辑控件。在这种情况下,第二个控件是集中的,但我不能发送字符串。因为我不知道聚焦控制文本框的IntPtr。如何获得聚焦控件的IntPtr。
请告诉我哪个选择是合适的。
请帮帮我。
您可以使用FindWindowEx
方法的第二个参数遍历所有控件。
根据MSDN:
所以你可以使用简单的loop:hwndChildAfter [in, optional]
类型:HWND
子窗口的句柄。
搜索从Z顺序的下一个子窗口开始。这个孩子window必须是hwndParent的直接子窗口,而不仅仅是后代窗口。如果hwndChildAfter为NULL,则从hwndParent的第一个子窗口
IntPtr fromHandle = IntPtr.Zero;
while (true)
{
IntPtr txtLot = FindWindowEx(orderdialog, fromHandle, "Edit", null);
if (txtLot == IntPtr.Zero) break; // not found
if (/*check if control satisfy some conditions*/) {
SendMessage(txtLot, WM_SETTEXT, 0, lot.ToString());
}
fromHandle = txtLot;
}