剪贴板为何响应慢 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;
}
...全文
402 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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时间片也太多了!!

16,548

社区成员

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

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

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