System.Windows.Forms.dll
我希望在C#类中包含此文件中的一些函数。
特别是:https://msdn.microsoft.com/en-us/library/system.windows.forms.cursor(v=vs.110).aspx
但我不知道如何获得功能列表。我试过没有返回结果的程序。我想知道是否有人可以给我一个而且只有一个例子?
例如,这会返回一个EntryPointNotFoundException
[DllImport("System.Windows.Forms.dll")]
public static extern void SetCursor(String s);
答案 0 :(得分:0)
首先,您需要启用互操作服务才能调用Windows函数:
using System.Runtime.InteropServices;
然后,您只需声明要导入的方法:
[DllImport("winmm.dll")]
public static extern bool PlaySound(string filename,long hmodule, int dword );
这会在非托管的winmm.dll中创建PlaySound方法的“映射” 该方法创建为静态,并且 extern 关键字的使用告诉编译该方法在您的类外部(不在其中运行)
答案 1 :(得分:0)
要获取非托管功能的列表/搜索,您可以使用
例如,对于SetCursor
,您可以致电
http://www.pinvoke.net/search.aspx?search=SetCursor&namespace=[All]
E.g。将光标放在SetCursorPos
提供的位置
using System.Runtime.InteropServices;
...
// Wrapper
class CursorNativeMethods {
[DllImport("User32.dll",
EntryPoint = "SetCursorPos",
CallingConvention = CallingConvention.Winapi)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern Boolean SetCursorPos(Point point);
...
[DllImport("User32.dll",
EntryPoint = "GetCursorPos",
CallingConvention = CallingConvention.Winapi)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern Boolean GetCursorPos([Out] out Point point);
...
}
// Your Routine
public static class MyCursor {
public Point Location {
get {
Point pt = new Point(-1, -1);
if (CursorNativeMethods.GetCursorPos(out pt))
return pt;
else
return new Point(-1, -1);
}
set {
CursorNativeMethods.SetCursorPos(value);
}
}
...
}
请注意,System.Windows.Forms.dll
是托管程序集(您不应该与之互操作),User32.dll
是非托管库。