C#在光标处输入数据

本文记录了一台旧版Win7 32位计算机上使用SendKeys.send()方法导致数据输出重复的问题。在遇到此类问题时,通过创建SendMsg类并使用SendMessage的SendText()方法成功解决了该问题,避免了输入法和低版本系统的影响。
摘要由CSDN通过智能技术生成

记录一下光标输出时的一个问题:

在一台年代久远的win7 32位计算机上使用SendKeys.send()方法输出时,出现了数据重复的现象;重复的位置是随机的,如“12356789”输出到文本框内变成了“1123456789”或“1234556789”;

后来用SendMessage输出解决了这个问题:

1、新建SendMsg类

    public class SendMsg
    {
        [DllImport("user32.dll")]
        public static extern IntPtr GetForegroundWindow();
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
        [DllImport("user32.dll")]
        static extern uint GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);
        [DllImport("user32.dll")]
        static extern bool GetGUIThreadInfo(uint idThread, ref GUITHREADINFO lpgui);
        [StructLayout(LayoutKind.Sequential)]
        public struct GUITHREADINFO
        {
            public int cbSize;
            public int flags;
            pub
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值