用下面的代码实现在按下热键时把剪贴板里的内容换成“SSS”然后模拟按键Ctrl+V粘贴,最后再把剪贴板原来的内容还原,可是为什么每次按下热键时粘贴出来的都不是“SSS”而是剪贴板里原来的内容呢?而且经常出现“Cannot open clipboard”的错误提示。
procedure tform1.ONHotkey(var message:Tmessage);
begin
txt0:=Clipboard.AsText;
Clipboard.AsText:='sss';
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), 0, 0);
keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0);
Clipboard.AsText:=txt0;
end;
procedure tform1.ONHotkey(var message:Tmessage);
begin
txt0:=Clipboard.AsText;
Clipboard.AsText:='sss';
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), 0, 0);
keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0);
Clipboard.AsText:=txt0;
end;
解决方案 »
- 下载一个文件,如果文件在IE的缓存不存在则从网络下载,否则从IE的缓存加载
- fastreport报表要把报表中含(合计)的一行内容字体加粗怎么设置
- 大家来YY,如果windows是中国人开发,想象哈API会怎么取名字?
- Help me is help you!
- 如何查看TDBGRid数据有无改动
- strtofloat函数怎么保留2位小数?
- 关于dbgrid或ttable控件的问题??
- 排序问题,字段Department,内容有:一部、二部、三部、四部,用Order by Department..
- 关于在线更新!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 一个关于字符串的问题?
- 作组件时,属性设置的难题,大家要帮忙一下啊??
- 问题
Application.ProcessMessages; //<-=------------
Clipboard.AsText:=txt0;
或者把Demo发到
后面要加上Application.ProcessMessages;和Clipboard.clear
因为keybd_event只是把按键消息放到消息队列里,剪贴板还没来得及处理,后面的Clipboard.AsText:=txt0;就已经执行了,结果就是你看到的那样