小弟目前用C#进行学习,具体的需求如下:
  1: 软件中连接读卡器,读取卡片上的信息,
  2: 读取操作完成之后,将获取的信息序列化存到*.txt中,
  3: 然后调用全局钩子截获对应的键盘按键,对应的方法中反序列化提取*.txt中的信息。
  4: 将提取的txt信息,填写到鼠标焦点所在的textbox文本框中。实现按键录入信息的功能。
现在碰到难题了: 如何去获取焦点所在的textbox文本框(不同界面的文本框)。

解决方案 »

  1.   


    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();    }将就着看看吧
      

  2.   

    这个我刚才试了下,貌似只能在同一界面的textbox填写。如果是不同软件中的textbox,就检测不到。
      

  3.   

    不同软件?
    不是同一个进程?
    那就FindWindow EnumWindows去吧