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

(これは文字通りこれまでのプログラム全体です)

明確にするために、私はこれに比較的慣れていないため、このコードはほぼ完全に別の Web サイトから取得したものです。しかし、残念ながら、そのウェブサイトが何であったかを忘れてしまいました。

ここで、最初の行 (DllImport) を作成する前に、VB6 は user32.dll に「mouse_event()」が存在しないことを通知していましたが、私の理解では、まだ存在していません。

ただし、その問題を調査したところ、インターネットで配置するように指示された場所に正確に配置した DllImport 行が見つかりましたが、現在、その同じ行で次のエラーメッセージが生成されています。

Compile error:

Invalid outside procedure

...自分が何をしているのかを実際に知っている人々から得たので、私を混乱させるだけでした(とにかくそうだと思いました)。

とにかく、このプログラムが機能してから長い時間が経ちました。プログラムを終了させる重大なエラーが発生せずに最後に実行できたのはいつだったのか思い出せません。私のコードが間違っています。

助けを提供してくれる人には、あらかじめ感謝します。

4

1 に答える 1

1

DLLImport のものを削除します。それは VB.Net です。有効な VB6 ではありません。

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

そして、Hans が言ったように、Declare のエイリアスから括弧を削除します。

于 2013-07-19T17:51:36.973 に答える