剪切板 延迟问题的解决 Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiAPI/html/delphi_20061201210157136.html
代码如下:
'''发送 TAB
Call keybd_event(vbKeyTab, 0, 0, 0)
Call keybd_event(vbKeyTab, 0, KEYEVENTF_KEYUP, 0)
''''发送 ctrl+C 复制 数据
Call keybd_event(VK_CONTROL, 0, 0, 0)
Call keybd_event(67, 0, 0, 0)
Call keybd_event(67, 0, KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0)
Sleep (800)
''''发送 ctrl+V 粘贴 数据
SendMessage(Text1.hwnd, WM_PASTE, 0&, 0&)
'''发送 TAB
Call keybd_event(vbKeyTab, 0, 0, 0)
Call keybd_event(vbKeyTab, 0, KEYEVENTF_KEYUP, 0)
''''发送 ctrl+C 复制 数据
Call keybd_event(VK_CONTROL, 0, 0, 0)
Call keybd_event(67, 0, 0, 0)
Call keybd_event(67, 0, KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0)
Sleep (800)
''''发送 ctrl+V 粘贴 数据
SendMessage(Text2.hwnd, WM_PASTE, 0&, 0&)
这样子可能时间太快了,,从剪切板上复制出来的内容 text1和text2中的内容会相同了,,有时候复制出来的东西还是原来的,没有变化,,,我分析了,应该就是把内容放到剪切板上,再粘贴到 text框里 ,剪切板没有那么快的原因吧??
请问怎么解决这个问题...
注: 可能你会说:"怎么这么麻烦,找到你要取出数据的控件的HWND,GetWindowText HWND,,,不就行了",可是我没有办法呀,我只能这样曲线救国了,不知道为什么我得到那个控件的句柄了,用GetWindowText得不到显示在那个程序里控件的文本而是得到的那个控件的名称吧(暂且叫名称),用sendmessage(,,WM_GETTEXT,,)也是一样,,我猜可能人家是自己做的一个控件吧,它控件里显示的内容属性可能不是text/caption一类?? 那个控件的类名读出来是QWidget
好了鲜花撒了一地了, 话到正题 我只能采取这种方式了,,现在想解决剪切板复制的数据不能一致的问题, 请高高手 帮忙 !
复制之前先加一个Ctrl+A(全选)
不过楼主该把帖子放到VB版合适一些
zswang(伴水清清):
我也觉得应该放VB,,怎奈高手都跑到这里了 :!
复制之前先加一个Ctrl+A(全选)
应该与我的'''发送 TAB 效果一样吧,,我发送TAB 目的也是全选切自己移动到下一个目标,
现在的问题是剪切板的问题,,我sleep延迟个1000毫秒就好多了,不过偶尔还是出点差错
Call keybd_event(vbKeyTab, 0, 0, 0)
Call keybd_event(vbKeyTab, 0, KEYEVENTF_KEYUP, 0)
强烈鄙视问题解决后不结贴的人!
强烈鄙视技术问题解决后把贴子转移到非技术区的人!
鄙视你们!
http://community.csdn.net/Expert/topic/5216/5216675.xml?temp=.9262659
问题解决了吗
谁给我解决????????????????????????????????????????????????????
ChangWeiTu() 你灯眼好好看看,,你给我解决问题了???
我还一直愁没人帮解决呢!!!
你给我解决了,把分全给你!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
楼主分析的已经很正确了,就是时间延迟的问题。
这个问题很难解决,就算你延迟5000,换台慢的机又不行了。这种用剪切板或文件传数据的方法都有这个问题。
难道真的只有这个办法了吗?能不能用共享内存之类的,看到别的贴子用过,不记得了。
zczb(zczb) ,,,把分全给你了
不好意思,没帮你解决问题