gpt4 book ai didi

c# - 如何修复 "System.MissingMethodException = {"在 Windows 6.5 上找不到 PInvoke DLL 'user32.dll'。"}?

转载 作者:行者123 更新时间:2023-11-30 15:42:36 29 4
gpt4 key购买 nike

我正在尝试使用 pInvoke,但在模拟器和设备上调用都失败了。我是 .NET 的新手(我是一名 C++ 开发人员),我不明白 JIT/框架为何找不到该 DLL/方法/等。

我还需要做些什么才能让它工作吗?

在查看类似问题时,似乎我可能需要也可能不需要将 DLL 添加到解决方案或 CAB - 但我从哪里获得该文件。

确定设备上的操作系统有 user32.dll? Windows 7 版本不可能是安装在设备上的正确版本,对吗?

编辑

其中任何一个都失败了:

[DllImport("coredll.dll", EntryPoint = "FindWindowW", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll", SetLastError=true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);

[DllImport("user32.dll", SetLastError = true)]
internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

[DllImport("coredll.dll", EntryPoint = "SipShowIM")]
public static extern bool SipShowIMP(int code);

[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();

最佳答案

Surely the OS on the device has user32.dll?

不,不幸的是它没有。 Windows Mobile 不包括 user32.dll 以及许多其他普通的 Windows API DLL。相反,您通常需要 P/Invoke 到 coredll.dll 中。有关签名,请参阅 PInvoke.net的“智能设备功能”部分(左下角)。


编辑:

正如您在评论中提到的,那里的一些签名显然不正确。您可以查看 Windows Mobile API 的函数(例如 SetWindowPos )以获得正确的签名。

我相信,对于你来说,大部分应该在 coredll.dll 中:

[DllImport("coredll.dll", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("coredll.dll", SetLastError=true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);

[DllImport("coredll.dll", SetLastError = true)]
internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

[DllImport("coredll.dll", EntryPoint = "SipShowIM")]
public static extern bool SipShowIMP(int code);

[DllImport("coredll.dll")]
public static extern IntPtr GetForegroundWindow();

关于c# - 如何修复 "System.MissingMethodException = {"在 Windows 6.5 上找不到 PInvoke DLL 'user32.dll'。"}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7353067/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com