C#关于操作系统的消息处理

Super_cpp 2017-01-05 06:20:53
楼主最近在做一个关于C#的智能输入的小程序
程序功能如下:点击一个按钮,就开始发送http请求。每次请求得到的是一段文字,这个小程序能把得到的文字发送到当前的光标的位置,任意位置。比如notepad,word,IE的输入框等,只要是光标在的地方。
楼主现在遇到的 问题是:
1.刚开始想使用SendMessage实现,但是得获取当前的焦点的应用程序的句柄,对于简单的notepad还是可以的,但是想是应用程序内嵌的TextBox好像就比较复杂了。
2.后来想着直接操作剪切板,然后模拟剪切板的ctrl+v事件进行处理。
楼主使用的Key_event发送的虚拟键盘消息。
顺序是:
1.获取当前剪切板的内容记录下来
2.将http请求的得到的消息放入到剪切板中
3.发送ctrl+v消息
4.将刚开始记录的消息放入到剪切板中

但是由于消息的处理的速度和Key_event可能是PostMessage形式的,在操作系统执行ctrl+v事件的时候,程序可能已经执行过了第4步。也就是粘贴了一个错误的string上去。

大家有什么方法能等ctrl+v执行完毕了再返回或者是其他的能在光标出输入String的好的方法么。感激不尽
...全文
203 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
woailiuxiaochang 2017-01-09
  • 打赏
  • 举报
回复
System.Windows.Forms.SendKeys.SendWait("^v"); 楼主试试这个方法
crystal_lz 2017-01-06
  • 打赏
  • 举报
回复
直接 SendKeys 不就搞定了
闭包客 2017-01-06
  • 打赏
  • 举报
回复
做输入法啊?我不懂,关注。 这种程序跟 C# 的关系不大了,C++程序员对这些比较熟悉。
zj_zwl 2017-01-06
  • 打赏
  • 举报
回复
用SendInput函数吧
Poopaye 2017-01-05
  • 打赏
  • 举报
回复
引用 楼主 Super_cpp 的回复:
但是想是应用程序内嵌的TextBox好像就比较复杂了。
键盘消息试试用广播,不用指定窗口
Poopaye 2017-01-05
  • 打赏
  • 举报
回复
把每个字符用WM_CHAR发过去不就行了?干嘛惊动剪贴板……

110,586

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧