none
遇到一个妖怪问题 resume next 没用 RRS feed

  • 常规讨论

  • 最近用vb6写点东西,然后要模拟键盘ctrl+c之后再取clipboard的text

    代码如下:

        Dim stmp As String
        On Error Resume Next
        '下一行的函数为激活另外一个已知句柄窗口,然后模拟键盘操作CTRL + C 过程
        Call XCopy(Me.hwnd)    '这里有模拟键盘操作后sleep (200)

        If Not Clipboard.GetFormat(vbCFText) Then Exit Sub
        stmp = Clipboard.GetText

    因为涉及到窗口切换问题,所以单步调容易让窗口切换的时候切换到代码编辑窗口,所以每次都是编译过后再看效果的,

     

    这里妖怪的地方就是

    1.如果代码如下

        Dim stmp As String
        On Error Resume Next
        Call XCopy(Me.hwnd)

        msgbox Clipboard.GetFormat(vbCFText)  '这里加个msgbox

        If Not Clipboard.GetFormat(vbCFText) Then Exit Sub
        stmp = Clipboard.GetText

    则除了第一次msgbox 显示是true外,之后的每一次都是false

    可是后面的代码 If Not Clipboard.GetFormat(vbCFText) Then Exit Sub 却好像没有执行似的,跳过去继续执行后面的代码,而且结果正确,也没有报错

     

    2.如果去掉msgbox ,则除了第一次不报错外,之后就报错:运行时错误521,不能打开剪贴板,On Error Resume Next 这句又好像没有执行似的,该报错的还是报错了

     

    以上代码是放在一个按钮的sub中执行的,每点击按钮则执行一次

     

    我真的好郁闷的说 : (  谁能帮忙解答解答啊 不胜感激啊!

    2008年3月30日 16:36

全部回复