剪贴板为何响应慢 50分!

vk2211 2007-08-17 04:07:30
写了一个程序,通过热键用keybd_event向另一个进程发送Ctrl + C的消息,使其将某一部分的内容复制到剪贴板上,但是,自从发送成功之后,一直检查剪贴板,但除了第一次能立刻取到剪贴板的值外,以后都至少需要4秒左右才能取到,这是怎么回事, 我希望这个时间可以缩短到200毫秒以内!
贴出程序:
::keybd_event( VK_CONTROL, MapVirtualKey( VK_CONTROL, 0 ), 0, 0 );
::keybd_event( 'C', MapVirtualKey( 'C', 0 ), 0, 0 );

int i = 0;
while ( m_Boardstr.IsEmpty() )
{
ReadClipboard( m_Boardstr );
Sleep( 50 );
}
其中,ReadClipboard是我自己写的读剪贴板的函数,是参考网上的,这里面基本没有太多的延迟,内容如下:
BOOL CXXXXX::ReadClipboard( CString &str )
{
if ( !OpenClipboard() )
{
return FALSE;
}
HGLOBAL clip = GetClipboardData( CF_TEXT );
str = CString( (char*)::GlobalLock( clip ) );
GlobalUnlock(clip);
CloseClipboard();
return TRUE;
}
...全文
386 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vk2211 2007-08-18
  • 打赏
  • 举报
回复
但是能告诉我,为什么我的程序在执行语句时,剪贴板不能正常运转呢?Win不是多任务的吗?
还有Sleep在对话框函数中,和在线程中会有不同吗?
vk2211 2007-08-18
  • 打赏
  • 举报
回复
试了一下,Sleep不起作用,无论Sleep多久,剪贴板里都没东西
最后用OnTimer摆平
nkeverstar 2007-08-18
  • 打赏
  • 举报
回复
他要不停的检测 剪贴板里是否有内容了
所以放while里。
emptyness 2007-08-17
  • 打赏
  • 举报
回复
你怎么知道 是4秒?
不过,平常我们复制的时候是不是也是4秒多呢? 呵呵.
测试了下 基本上是瞬间就复制好的.

keybd_event 是不是原因呢?
试下SendMessage()吧 这个是处理完消息才返回的..应该不会那样.
复制相关的消息是WM_COPY WM_PASTE WM_CUT.具体的msdn

while ( m_Boardstr.IsEmpty() )
{
ReadClipboard( m_Boardstr );
Sleep( 50 );
}

while的时候是需要sleep的 不然会cpu占用100%.我到觉得奇怪
这个ReadClipboard( m_Boardstr );应该是放在while外面的吧..
不再while的时候就说明有内容了 然后就开始read,没内容的时候为什么还read??
nkeverstar 2007-08-17
  • 打赏
  • 举报
回复
计数器:OnTimer()
nkeverstar 2007-08-17
  • 打赏
  • 举报
回复
int i = 0;
while ( m_Boardstr.IsEmpty() )
{
ReadClipboard( m_Boardstr );
Sleep( 50 );
}
--------------------------
这个语句很要命的。
建议用 SetTime(),你多试试就知道了,在Sleep()过程中,程序总好像睡着了一样,
响应那是相当慢!
更甚的是,你还while!!!它在不停的循环检测,占的CPU时间片也太多了!!
简介   AutoHotkey 是一款免费的、Windows平台下开放源代码的热键脚本语言。 编辑本段 功能   通过发送键盘或鼠标的键击动作命令来实现几乎所有操作的自动化。您可以自己编写 宏 或者使用宏录制器来生成;   为键盘,游戏操纵杆和鼠标创建 热键。 事实上任何的按键、按钮或组合键都可以被设置为热键;   当键入您自定义的缩写时可以 扩展缩写。例如, 键入“btw”就可以自动扩展为“by the way”;   创建自定义的数据输入表格、用户界面、菜单等。详情请看 图形界面 部;   映射 键盘、游戏操纵杆和鼠标上的按键或按钮;   运行现有的AutoIt v2脚本并用 新功能 来增强它们;   将脚本文件编译 成EXE可执行文件,使得程序在没有安装AutoHotkey的机器上得以运行;   借助 相关工具 以实现更强大的功能。   更多关于热键的说明   AutoHotkey 可令键盘、游戏操纵杆和鼠标的所有潜能都发挥出来。例如,除了典型的Control、Alt和Shift键之外,你还可以定义Win键(徽标键)和Capslock键作为调节键。 而实际上你还可以设置任意的键盘按键或鼠标按键作为调节键。详细内容请看 高级热键 部。   其他功能   调节音量、设置静音,以及其他 关于声卡的设置;   令指定窗口变为 透明,顶层窗口,或改变 外形;   用 游戏操纵杆 或 键盘 代替鼠标;   监控 您的系统。例如,当您不希望见到的窗口出现时自动关闭它们;   获取并改变 剪贴板的内容, 包括从资源管理器中复制的文件的名称;   关闭或屏蔽 Windows自有的快捷键,例如Win+E和Win+R;   取替Alt-Tab (通过按键、鼠标滚轮或按钮)从而减轻RSI(肢体重复性劳损 );   使用您喜欢的图标、工具提示(ToolTip)、菜单项目和子菜单来自定义 托盘图标菜单 ;   显示 对话框、工具提示(Tooltips)、气球提示 以及 弹出菜单,与用户交互;   执行脚本动作来 响应 系统关闭或注销;   检测系统 空闲时间。例如, 在系统空闲的时候执行高CPU负荷的任务;   通过检测 图像 和 象素色彩来自动执行游戏中的动作;   读取、写入 以及 解释 文本文件比起其他语言更容易;   针对一组与 通配符 匹配的文件进行操作;   可对 注册表 和 INI文件 进行操作。   在 Windows 95/98/Me 下的一些限制:   一些 高级功能 -- 例如鼠标热键和 热字串 -- 在Win9x 平台将失效。   你只要有想像力,它可以完成更多工作。
##KodExplorer (http://kalcaddle.com/) ###ver2.61(2014.7.12) `商业版授权请联系:kalcaddle#qq.com` #### 1.是什么: - Kodexplorer为千帆网络工作室开发的一款服务器文件管理程序。 - 完美取代FTP管理:可用于服务器文件管理,zip解压缩 备份还原、支持图片、音乐、视频预览、office、pdf等格式在线预览。文件夹拖拽上传……。 - 在线编程:支持几乎所有编程语言的在线编辑(高亮,多光标编辑.堪比本地的sublime) - 极佳的操作体验:及其便捷的快捷键支持,让你拥有本地化的体验 - 中文等多语言支持:中文编码全面兼容,文件编辑自动适配。 - 超快的速度:全面采用Ajax+Json进行数据通信,毫秒级的响应速度; - 全平台兼容性:Win Linux Mac (Apache、Nginx、IIS) #### 2.使用场景: - 取代FTP,服务端、客户端软件等复杂的安装配置。kod可以一键安装随处使用. - 你可以用它来管理你的服务器(备份,在线解压缩,版本发布....) - 你可以把他当做管理linux的一个操作系统界面 - 可以用来作为私有云存储系统,存储你的文件... - 当然你也可以用来享文件 - Web IDE / browser code editor awesomeness - 更多场景等你来挖掘!…… #### 3.使用说明 管理员: admin/admin 普通用户:demo/demo 游客用户:guest/guest [如何使用] 下载程序,解压上传到你的服务器路径下,data目录设置777权限。访问体验超便捷的服务吧! (data目录没有写权限会导致配置修改不能保存、不能新建用户等) [关于上传问题] 程序没有做任何限制,如果需要上传大文件,则修改 php.ini:`upload_max_filesize = 1000M post_max_size = 1000M` [关于解压缩问题] 程序不做任何限制,如若失败请设置php内存限制。memory_limit 1000M [关于兼容性] 建议使用chrome firefox ie9+ 体验更完整。ie8以下基本上不做兼容处理。chrome支持文件夹拖拽上传。 [文件打开] office文件在线预览功能,服务器必须在公网(外部能访问该服务器) [忘记密码] 修改data/system/member.php 密码为明文的md5值 例如将admin密码重设为admin 则修改第一行:"name":"admin","password":"21232f297a57a5a743894a0e4a801fc3" ![](https://cloud.githubusercontent.com/assets/3761968/2583304/764f562a-b9cf-11e3-8e59-afdbdffc20eb.png) ###ver2.61 `2014/7/12` ---- ####update: - 实时搜索,根据搜索框内容变化,实时选中匹配到的结果; - 弹出搜索框遍历子文件夹递归搜索 - session key 加入kod_前缀 避免和其他系统key冲突 - 编辑器选中优化 选择鼠标到窗口外事件处理 ####fix bug:(bug解决和程序优化) - backspace后退截获浏览器事件,作为后退前一次访问的文件夹; - 搜索首字母不匹配问题 - 弹出层中的弹出层关闭,父窗口失去焦点问题。 - 代码中grunt部代码拆开,放到程序外面;提交到git、osc - 桌面:删除alert enter快捷键删除 - install 检测 加入跳过,(只判断用到的函数) 加入多语言 - zip压缩没有权限 提示红色,false 统一查找 - 登录成功后 验证码输错清除 - 非root用户拖拽到文件夹问题 - 非root解压问题 不能解压 - list oexe 图标问题 - 用户目录不存在判断 - fileCahe 互斥锁 reset 不用 - ie 8~10样式问题调整 ###ver2.6 `2014/7/6` ---- ####update: - 完全性优化;加入严格的校验机制 - 首次运行环境检测[data目录检测,必须的函数支持提示] - 上传已存在处理——创建副本(另外包括粘贴,解压) - 选中优化 ctrl选中拖拽 - 键盘快捷键选中文件,多个字符
虽然 QQ 拥有远程协助功能,但很多时候连接并不够流畅,而且被控电脑方也必须要有人操作才行。因此,很多人会选择其它的远程控制、传输软件, 就是一个很不错的选择。 是一款跨平台速度快的免费远程连接/远程桌面控制/远程发送、接受文件软件,据说是前 TeamViewer 开发小组人员自立门户的产品,它拥有先进的视频压缩技术 DeskRT, 可以轻松穿透防火土「qi」啬「ang」/路由器,实测在电信、移动的跨网宽带环境下,速度确实要比 TeamViewer 和 QQ 流畅一点,可谓是潜力巨大啊! 目前支持 Windows 系统(XP ~ Windows 10)、macOS 和 Linux, 移动端也支持 iOS、Android 等主流平台。 绿色免费,体积小巧,但功能却很实用,使用也足够简单,整体速度较为流畅,应该可以满足很多人的远程控制需求。 免费高速流畅的远程控制/远程桌面连接软件: 由于现今网络环境越来越复杂,防火土「qi」啬「ang」、路由器、宽带提供商……等等各种因素常常会导致很多「直连」的远程控制软件「如微软的 Microsoft Remote Desktop」操作缓甚至是连接错误。而 给人的印象是速度极快、反应流畅迅速,比起前辈 TeamViewer 有过之而无不及,而且它体积仅小巧。 为了解决远程桌面连接速度的问题,使用了名为 DeskRT 的底层技术,内置了先进的视频解码器,使得在复杂的网络坏境下依然能让用户体验到流畅的远程桌面控制。 支持声音传输、支持画质设置、屏幕截图、连接设备之间聊天,重点是还支持与远程电脑同步剪贴板!不仅是文字,即使是文件或文件夹,都能直接复制/粘贴到另一台电脑去,这一点非常实用!跟本地电脑用起来一样方便~ 而且还能通过 Block users input 的功能,临时使受控端的鼠标键盘失效,功能还算比较丰富。 另外, 既可以以绿色软件的方式运行,也可以安装到系统上实现开机启动、无人干预的情况下接受控制等。 功能特点: 快速:是比其他的都要快。这使得远程桌面操作可能将使用其他远程桌面软件是不可想象的。视频编辑,图像编辑,计算机管理,在线团队… 安全性:远程计算机控制和使用维护网上银行的安全,这要归功于TLS 1.2加密,2048位RSA密钥交换和Erlang技术。 免费:交易会与远程PC访问是免费供个人使用。出于商业目的,提供了透明的授权模式没有隐藏的费用,不得强迫更新,并与包括所有更新。 帧率:传输通过局域网和许多互联网连接每秒60帧。这比任何竞争的远程桌面应用程序更加,使屏幕上的运动尽可能顺利,因为大多数PC显示器也以每秒60帧运行。 使得无冲击的工作成为可能。 延迟:延迟在尽可能低的水平是工作在远程桌面上的关键。延迟越低,更快的远程PC响应您的输入。由于互联网连接总是从一台电脑传输数据时,对方施加一定的延迟,这是非常重要的,增加了尽可能少的法案。在本地网络中,任何延迟桌子下面就在于60毫秒,不再察觉。 通信:如果远程桌面软件是用来通过Internet连接,尽可能高的带宽效率是决定因素。这对于像UMTS移动连接尤其如此。 带宽效率使得它可以流畅的可用带宽为100 KB/秒完成办公任务。但也有更低的带宽,仍然执行比竞争对手要好得多。 访问:忘记可靠性低和繁琐的防火墙配置。使用你的个人电脑的任何地方,没有任何麻烦。无论是五钟,五个小时 – 你甚至不会注意到是存在的。您的个性化-ID是关键,您的桌面与您所有的应用程序,照片,文档和文件。您的信息保持它的归属。在您的硬盘驱动器,以及无处。 控制远程电脑的几种连接方式: 通过 数字地址或 ID 连接 在联网的环境下启动 之后,会自动配得到一个 地址(一串9位数字或者机器名@AD格式,比如下图的:472 278 765 或 www.yxssp.com@ad),别人可以通过这个「地址」连接到你的电脑。 而在「其他工作台」一栏中,输入别人的 地址并点击连接按钮,即可向对方电脑发出控制的请求,待被控电脑点击「接受」之后 (如下图),即可开始远程控制对方桌面。 通过 IP 地址或机器名连接 如果 已经在控制和受控端两台电脑上安装好,你就可以通过 IP 地址或者机器名进行直接连接。这种情况下, 会通过 7070 端口直接以 TCP 进行连接,并不会经过服务器中转。 无人干预远程访问: 如果你希望能直接控制远程电脑,不想受控端总得有人点“接受”才能操作的话,你可以在受控电脑上点击“ 在电脑上安装”,并设置一个密码。这样,只要被控电脑开机了,你就可以直接通过密码去控制了。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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