当前位置:编程学习 > C#/ASP.NET >>

请高手指点,在后台监听服务里怎么将剪贴版的内容复制到其他程序的当前焦点所在的输入框里?

如题。 --------------------编程问答-------------------- 可以用windows消息把数据穿过去,然后把剪切板的数据赋给输入框,比如用SendMessage。前提是知道那个进程的标题。和接收消息的进程要重写windows消息接收方法。
方法应该很多,你Google下应该很多吧,以前做过,忘了。~~~ --------------------编程问答-------------------- SendTxtMessage(hwdText, WM_SETTEXT, 0, strText.ToCharArray());
findwindow查询句柄
clipboard --------------------编程问答-------------------- 真实的需求是这样的:
当扫描到一个条码的时候,
我想让后台服务获取条码,然后把条码复制到当前窗口的输入框内。
当前窗口可以是任务程序。只要是输入框,就复制过去 --------------------编程问答-------------------- 有人知道怎么做吗 --------------------编程问答--------------------

using System.Runtime.InteropServices;

         const int WM_COPYDATA = 0x004A;
        [DllImport("User32.dll", EntryPoint = "SendMessage")]
        private static extern int SendMessage(
        int hWnd, // handle to destination window
        int Msg, // message
        int wParam, // first message parameter
        ref COPYDATASTRUCT lParam // second message parameter
        );

        [DllImport("User32.dll", EntryPoint = "FindWindow")]
        private static extern int FindWindow(string lpClassName, string
        lpWindowName);

        public int SendMessageToWin(string winFormName,string Sendstr)
        {
            int WINDOW_HANDLER = FindWindow(null, @winFormName);
            if (WINDOW_HANDLER != 0)
            {
                byte[] sarr = System.Text.Encoding.Default.GetBytes(@Sendstr);
                int len = sarr.Length;
                COPYDATASTRUCT cds;
                cds.dwData = (IntPtr)13579;
                cds.lpData = this.textBox1.Text;
                cds.cbData = len + 1;
                return SendMessage(WINDOW_HANDLER, WM_COPYDATA, 0, ref cds);
            }
            else
            {
                return 0;
            }
        }
        public struct COPYDATASTRUCT
        {
            public IntPtr dwData;
            public int cbData;
            [MarshalAs(UnmanagedType.LPStr)]
            public string lpData;
        }
--------------------编程问答--------------------  /// <summary>
        /// 调用这个方法
        /// </summary>
        /// <param name="winFormName">指定窗体的标题</param>
        /// <param name="Sendstr">要传的条码</param>
        /// <returns>1成功 0失败</returns>
        public int SendMessageToWin(string winFormName,string Sendstr)
        {
            int WINDOW_HANDLER = FindWindow(null, @winFormName);
            if (WINDOW_HANDLER != 0)
            {
                byte[] sarr = System.Text.Encoding.Default.GetBytes(@Sendstr);
                int len = sarr.Length;
                COPYDATASTRUCT cds;
                cds.dwData = (IntPtr)13579;//13579 这个ID随便换 看接收方怎么设的
                cds.lpData = this.textBox1.Text;
                cds.cbData = len + 1;
                return SendMessage(WINDOW_HANDLER, WM_COPYDATA, 0, ref cds);
            }
            else
            {
                return 0;
            }
        }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,