当前位置:编程学习 > VB >>

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

求救呀,为什么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
keybd_event mouse_event clipboard --------------------编程问答-------------------- 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 复制数据到剪贴板。你以为我很傻吗?我只是想这种过程让程序来自动化执行 --------------------编程问答--------------------
引用 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 复制数据到剪贴板。你以为我很傻吗?我只是想这种过程让程序来自动化执行  --------------------编程问答--------------------
引用 2 楼 baidaiguoke521 的回复:
就是打开一个文档,放在窗口右边,然后用这个程序自动执行ctrl+A、ctrl+c 复制数据到剪贴板。你以为我很傻吗?我只是想这种过程让程序来自动化执行


呵呵,别这么说,没有人说你傻,除非。。。。

你这样做,目的无法达到,ctrl+A、ctrl+c是获得焦点的窗口才起作用,但是你的command一click,焦点就转移到按键上了,所以不能起到拷贝的效果

如果是word文档,或者excel文档,那么,你可以使用其自动化接口直接获取数据 --------------------编程问答--------------------
引用 4 楼 worldy 的回复:
Quote: 引用 2 楼 baidaiguoke521 的回复:

就是打开一个文档,放在窗口右边,然后用这个程序自动执行ctrl+A、ctrl+c 复制数据到剪贴板。你以为我很傻吗?我只是想这种过程让程序来自动化执行


呵呵,别这么说,没有人说你傻,除非。。。。

你这样做,目的无法达到,ctrl+A、ctrl+c是获得焦点的窗口才起作用,但是你的command一click,焦点就转移到按键上了,所以不能起到拷贝的效果

如果是word文档,或者excel文档,那么,你可以使用其自动化接口直接获取数据

我在把焦点转移到command2之前,不是已经完成ctrl+A,ctrl+C,已经把内容复制到剪切板了 --------------------编程问答-------------------- 你先别执行
Text4.Text = Clipboard.GetText

手动测试一下东西是否进到了剪贴板,我觉得你的东西没进去

你是在command2里面执行copy paste的,所以command2得到焦点在先。 --------------------编程问答--------------------
引用 6 楼 clear_zero 的回复:
你先别执行
Text4.Text = Clipboard.GetText

手动测试一下东西是否进到了剪贴板,我觉得你的东西没进去

你是在command2里面执行copy paste的,所以command2得到焦点在先。
手动测试很成功,你有什么高见 --------------------编程问答-------------------- 你想要复制内容的文档是什么程序?
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,