0

我正在使用 Visual Basic 6.0(我知道,它已经过时了,但我能说什么呢?我就是这样过时的)。我一直在尝试让一个程序工作,使鼠标在单击按钮后单击屏幕上的预定点(这不是整个程序的内容,但我仍在构建它,这是我的障碍)

[System.Runtime.InteropServices.DllImport("user32.dll")]
Private Declare Function mouse_event Lib "user32.dll" Alias "mouse_event()" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4

Public Function Mouse_LeftClick()
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Function

Private Sub Command1_Click()
    Dim X As Long
    Dim Y As Long
    Dim mouse_x As Long
    Dim mouse_y As Long
    X = CLng(1285)
    Y = CLng(134)

    mouse_x = CLng(X * 65535 / Screen.Width)
    mouse_y = CLng(Y * 65535 / Screen.Height)

    i = mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, mouse_x, mouse_y, 0, 0)
    n = Mouse_LeftClick()
End Sub

Private Sub Command2_Click()
    End
End Sub

(到目前为止,这实际上是整个程序)

需要明确的是,我在这方面相对较新,所以这段代码几乎完全取自另一个网站。但不幸的是,我已经忘记了那个网站是什么。

现在,在我有第一行(DllImport)之前,VB6 告诉我 user32.dll 中不存在“mouse_event()”——据我了解,它仍然不存在。

然而,一旦我研究了这个问题,我发现了 DllImport 行,我把它放在互联网告诉我放置它的地方,但现在同一行正在产生这个错误消息:

Compile error:

Invalid outside procedure

...这只会让我感到困惑,因为我是从那些真正知道自己在做什么的人那里得到的(无论如何我都这么认为)。

无论如何,这个程序已经很久没有运行了,我真的不记得上次我能够运行它而没有出现一些导致程序结束的严重错误,所以我求助于 StackOverflow 来告诉我我做了什么可怕的事情我的代码错了。

提前感谢任何提供帮助的人。

4

1 回答 1

1

删除 DLLImport 的东西。它是 VB.Net,根本不是有效的 VB6。

 [System.Runtime.InteropServices.DllImport("user32.dll")] 

然后,就像 Hans 所说,从 Declare 中的别名中删除括号。

于 2013-07-19T17:51:36.973 回答