求救呀,为什么text4.text=clipboard.gettext第一次获得复制内容,不会成功

没有风度 2013-05-25 12:36:21
求救呀,为什么text4.text=clipboard.gettext第一次获得复制内容,不会成功
Dim x As Long, y As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Const KEYEVENTF_KEYUP = 2
Private Type POINTAPI
x As Long
y As Long
End Type
Dim p As POINTAPI
Dim t1 As Date, t2 As Date

Private Sub Command1_Click()
p.x = Val(Text1.Text)
p.y = Val(Text2.Text)
SetCursorPos p.x, p.y
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
Command2_Click
End Sub

Private Sub Command2_Click()
keybd_event vbKeyControl, 0, 0, 0
keybd_event vbKeyA, 0, 0, 0
keybd_event vbKeyControl, 0, KEYEVENTF_KEYUP, 0
keybd_event vbKeyA, 0, KEYEVENTF_KEYUP, 0

keybd_event vbKeyControl, 0, 0, 0
keybd_event vbKeyC, 0, 0, 0
keybd_event vbKeyControl, 0, KEYEVENTF_KEYUP, 0
keybd_event vbKeyC, 0, KEYEVENTF_KEYUP, 0
Text4.Text = Clipboard.GetText
End Sub

Private Sub Form_Load()

End Sub

Private Sub Timer1_Timer()
GetCursorPos p
Label1.Caption = p.x & "+" & p.y
End Sub
...全文
1902 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
me4405801 2013-06-08
  • 打赏
  • 举报
回复
你想要复制内容的文档是什么程序?
没有风度 2013-06-08
  • 打赏
  • 举报
回复
引用 6 楼 clear_zero 的回复:
你先别执行 Text4.Text = Clipboard.GetText 手动测试一下东西是否进到了剪贴板,我觉得你的东西没进去 你是在command2里面执行copy paste的,所以command2得到焦点在先。
手动测试很成功,你有什么高见
没有风度 2013-05-27
  • 打赏
  • 举报
回复
引用 4 楼 worldy 的回复:
[quote=引用 2 楼 baidaiguoke521 的回复:] 就是打开一个文档,放在窗口右边,然后用这个程序自动执行ctrl+A、ctrl+c 复制数据到剪贴板。你以为我很傻吗?我只是想这种过程让程序来自动化执行
呵呵,别这么说,没有人说你傻,除非。。。。 你这样做,目的无法达到,ctrl+A、ctrl+c是获得焦点的窗口才起作用,但是你的command一click,焦点就转移到按键上了,所以不能起到拷贝的效果 如果是word文档,或者excel文档,那么,你可以使用其自动化接口直接获取数据[/quote] 我在把焦点转移到command2之前,不是已经完成ctrl+A,ctrl+C,已经把内容复制到剪切板了
clear_zero 2013-05-27
  • 打赏
  • 举报
回复
你先别执行 Text4.Text = Clipboard.GetText 手动测试一下东西是否进到了剪贴板,我觉得你的东西没进去 你是在command2里面执行copy paste的,所以command2得到焦点在先。
worldy 2013-05-25
  • 打赏
  • 举报
回复
引用 2 楼 baidaiguoke521 的回复:
就是打开一个文档,放在窗口右边,然后用这个程序自动执行ctrl+A、ctrl+c 复制数据到剪贴板。你以为我很傻吗?我只是想这种过程让程序来自动化执行
呵呵,别这么说,没有人说你傻,除非。。。。 你这样做,目的无法达到,ctrl+A、ctrl+c是获得焦点的窗口才起作用,但是你的command一click,焦点就转移到按键上了,所以不能起到拷贝的效果 如果是word文档,或者excel文档,那么,你可以使用其自动化接口直接获取数据
没有风度 2013-05-25
  • 打赏
  • 举报
回复
引用 1 楼 worldy 的回复:
Private Sub Command2_Click() keybd_event vbKeyControl, 0, 0, 0 keybd_event vbKeyA, 0, 0, 0 keybd_event vbKeyControl, 0, KEYEVENTF_KEYUP, 0 keybd_event vbKeyA, 0, KEYEVENTF_KEYUP, 0 keybd_event vbKeyControl, 0, 0, 0 keybd_event vbKeyC, 0, 0, 0 keybd_event vbKeyControl, 0, KEYEVENTF_KEYUP, 0 keybd_event vbKeyC, 0, KEYEVENTF_KEYUP, 0 Text4.Text = Clipboard.GetText End Sub 你这个keybd_event 是送到哪个窗口?Command2_Click() 的时候,command2变为了活动窗口,你你能选择和拷贝到什么呢? 要拷贝窗口控件的的数据,其实很简单clipboard.settext text1 即可,没必要那么复杂,发送一大堆按键消息
就是打开一个文档,放在窗口右边,然后用这个程序自动执行ctrl+A、ctrl+c 复制数据到剪贴板。你以为我很傻吗?我只是想这种过程让程序来自动化执行
没有风度 2013-05-25
  • 打赏
  • 举报
回复
就是打开一个文档,放在窗口右边,然后用这个程序自动执行ctrl+A、ctrl+c 复制数据到剪贴板。你以为我很傻吗?我只是想这种过程让程序来自动化执行
worldy 2013-05-25
  • 打赏
  • 举报
回复
Private Sub Command2_Click() keybd_event vbKeyControl, 0, 0, 0 keybd_event vbKeyA, 0, 0, 0 keybd_event vbKeyControl, 0, KEYEVENTF_KEYUP, 0 keybd_event vbKeyA, 0, KEYEVENTF_KEYUP, 0 keybd_event vbKeyControl, 0, 0, 0 keybd_event vbKeyC, 0, 0, 0 keybd_event vbKeyControl, 0, KEYEVENTF_KEYUP, 0 keybd_event vbKeyC, 0, KEYEVENTF_KEYUP, 0 Text4.Text = Clipboard.GetText End Sub 你这个keybd_event 是送到哪个窗口?Command2_Click() 的时候,command2变为了活动窗口,你你能选择和拷贝到什么呢? 要拷贝窗口控件的的数据,其实很简单clipboard.settext text1 即可,没必要那么复杂,发送一大堆按键消息

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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