小弟目前用C#进行学习,具体的需求如下:
1: 软件中连接读卡器,读取卡片上的信息,
2: 读取操作完成之后,将获取的信息序列化存到*.txt中,
3: 然后调用全局钩子截获对应的键盘按键,对应的方法中反序列化提取*.txt中的信息。
4: 将提取的txt信息,填写到鼠标焦点所在的textbox文本框中。实现按键录入信息的功能。
现在碰到难题了: 如何去获取焦点所在的textbox文本框(不同界面的文本框)。
1: 软件中连接读卡器,读取卡片上的信息,
2: 读取操作完成之后,将获取的信息序列化存到*.txt中,
3: 然后调用全局钩子截获对应的键盘按键,对应的方法中反序列化提取*.txt中的信息。
4: 将提取的txt信息,填写到鼠标焦点所在的textbox文本框中。实现按键录入信息的功能。
现在碰到难题了: 如何去获取焦点所在的textbox文本框(不同界面的文本框)。
private void Form2_Shown(object sender, EventArgs e)
{
this.textBox1.Focus();
IntPtr ptr = NativeMethods.GetFocus();
Control tb = Control.FromHandle(ptr);
if (tb != null)
MessageBox.Show(tb.Name);
}[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
public struct HWND__
{ /// int
public int unused;
} public partial class NativeMethods
{ /// Return Type: HWND->HWND__*
[System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "GetFocus")]
public static extern System.IntPtr GetFocus(); }将就着看看吧
不是同一个进程?
那就FindWindow EnumWindows去吧