2013-07-19 153 views
0

我使用的是Visual Basic 6.0(我知道,它已經過時了,但我還能說什麼?我很老氣)。我一直試圖讓一個程序工作,點擊一個按鈕後,鼠標點擊屏幕上的預定點(這不是整個程序將會是什麼,但我仍然在構建它,這是我的障礙)mouse_event not defined and DllImport not working

[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告訴我「mouse_event()」在user32.dll中不存在 - 據我的理解,它仍然沒有。

一旦我研究這個問題,不過,我發現我放在什麼地方上網叫我把它放在的DllImport線,但現在,同樣的線路產生此錯誤消息:

Compile error: 

Invalid outside procedure 

。 ..這隻會讓我感到困惑,因爲我從那些真正知道他們在做什麼的人那裏得到了這些信息(無論如何我都這麼認爲)。不管怎麼說,自從這個程序運行已經很長時間了,我實際上還記得上一次我能夠運行它而沒有收到結束程序的一些嚴重錯誤,所以我轉向StackOverflow來告訴我我是什麼我的代碼做得非常錯誤。

非常感謝您提供幫助的人。

+0

從別名中刪除括號。 –

+0

每當我嘗試這樣做時,出於某種奇怪的原因,VB6會自動刪除剩下的別名「mouse_event」。我不知道爲什麼。 – Seriamus

+0

當然,因爲它與函數名稱沒有區別。所以它不需要*別名。 –

回答

1

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

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

然後,就像Hans說的那樣,從Declared中的別名中刪除括號。