Esempio n. 1
0
        /// <summary>
        /// 单个粘贴
        /// </summary>
        /// <param name="clip"></param>
        private void SinglePaste(ClipModel clip)
        {
            //设置剪切板前取消监听
            WinAPIHelper.RemoveClipboardFormatListener(wpfHwnd);

            clipService.SetValueToClipboard(clip);
            //Thread.Sleep(100);
            SendPasteKey();
            //设置剪切板后恢复监听
            WinAPIHelper.AddClipboardFormatListener(wpfHwnd);
        }
Esempio n. 2
0
        /// <summary>
        /// 添加剪切板监听, 更改窗体属性,不在alt+tab中显示
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_SourceInitialized(object sender, EventArgs e)
        {
            HwndSource source = PresentationSource.FromVisual(this) as HwndSource;

            source.AddHook(WndProc);
            wpfHwnd = new WindowInteropHelper(this).Handle;
            WinAPIHelper.AddClipboardFormatListener(wpfHwnd);

            int exStyle = (int)WinAPIHelper.GetWindowLong(wpfHwnd, -20);

            exStyle |= 0x00000080;
            WinAPIHelper.SetWindowLong(wpfHwnd, -20, exStyle);
        }
Esempio n. 3
0
        /// <summary>
        /// 批量粘贴,由于循环太快、发送粘贴按键消息太慢,故延时
        /// </summary>
        /// <param name="needPause"></param>
        private void BatchPaste(List <ClipModel> clipList)
        {
            //设置剪切板前取消监听
            WinAPIHelper.RemoveClipboardFormatListener(wpfHwnd);

            for (int i = 0; i < clipList.Count; i++)
            {
                ClipModel clip = clipList[i];
                if (i != clipList.Count - 1 && !clip.ClipValue.Contains("\n"))
                {
                    clip.ClipValue += "\n";
                }
                clipService.SetValueToClipboard(clip);
                SendPasteKey();
                Thread.Sleep(50);
            }
            //设置剪切板后恢复监听
            WinAPIHelper.AddClipboardFormatListener(wpfHwnd);
        }