剪贴板为何响应慢 50分!
写了一个程序,通过热键用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;
}