delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
剪切板 延迟问题的解决 Delphi / Windows SDK/API
http://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)   ,,,把分全给你了

不好意思,没帮你解决问题

posted on 2008-09-23 09:37 delphi2007 阅读(186) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。