我花了很多天时间将文本值发送到C#中其他应用程序的焦点文本框。
我的代码:
IntPtr txtLot = FindWindowEx(orderdialog, new IntPtr(0), "Edit", null);
SendMessage(txtLot, WM_SETTEXT, 0, lot.ToString());
我想要我的两种解决方案。
选择1: 我在spy ++中找到了三个编辑控件。在上面的代码中,我只获得了第一个编辑控件。但是我需要获得第二个编辑控件值的IntPtr来发送一些字符串。
选择2: 我们可以使用tab键来聚焦第二个编辑控件。在那,第二控制是集中但我无法发送字符串。因为我不知道聚焦控制文本框的 IntPtr 。如何获得集中控制的IntPtr。
请建议我选择哪个。
请帮帮我。
答案 0 :(得分:0)
您可以使用FindWindowEx
方法的第二个参数迭代所有控件。
根据MSDN:
hwndChildAfter [in,optional]
类型:HWND
子窗口的句柄。
搜索从Z顺序中的下一个子窗口开始。孩子 window必须是hwndParent的直接子窗口,而不仅仅是a 后代窗口。如果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;
}