C# 这段代码有一个不带参数的函数调用-在C中工作,但在VB.NET中不工作

C# 这段代码有一个不带参数的函数调用-在C中工作,但在VB.NET中不工作,c#,vb.net,console-application,mouse-hook,C#,Vb.net,Console Application,Mouse Hook,我正在尝试在VB.NET中使用C语言。代码的目的是读取鼠标坐标,并在单击鼠标按钮时使用控制台应用程序输出它们。是的,我意识到这是一个愚蠢的控制台应用程序使用,但它可能是一个项目,我想承担必要的。我已设法使其在C中工作,但在VB.NET中,我在这方面遇到了一个错误: Private Shared _proc As LowLevelMouseProc = HookCallback() C线是: private static LowLevelMouseProc _proc = HookCallbac

我正在尝试在VB.NET中使用C语言。代码的目的是读取鼠标坐标,并在单击鼠标按钮时使用控制台应用程序输出它们。是的,我意识到这是一个愚蠢的控制台应用程序使用,但它可能是一个项目,我想承担必要的。我已设法使其在C中工作,但在VB.NET中,我在这方面遇到了一个错误:

Private Shared _proc As LowLevelMouseProc = HookCallback()
C线是:

private static LowLevelMouseProc _proc = HookCallback;
HookCallback函数有三个参数,我包括以下代码:

private static IntPtr HookCallback(
        int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0 &&
                MouseMessages.WM_LBUTTONDOWN == (MouseMessages)wParam)
            {
                MSLLHOOKSTRUCT hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));
                Console.WriteLine(hookStruct.pt.x + ", " + hookStruct.pt.y);
            }
            return CallNextHookEx(_hookID, nCode, wParam, lParam);
        }

由于C代码中的某些原因,它调用HookCallback函数时没有列出任何参数,这是绝对正确的。在VB.NET中,这不起作用,正如我所预料的那样。我的问题是:如何在VB.NET中实现这一点?我是C新手,否则我会使用C代码。

您的VB声明在结尾处有。。这有区别吗?我希望,它返回相同的错误,有括号和没有括号。我不认为VB.NET在进行没有参数的函数调用时对括号的包含过于挑剔。C代码不是调用该方法,而是创建一个指向该函数的委托。在VB中,您试图实际调用函数,因此problems.VB需要AddressOf关键字。不,你不能让这个钩子在控制台模式的应用程序中工作。它需要一个消息循环Application.Run。