Nip*_*rus 6 c# macos mono winapi
我正在编写一个使用windows user32.dll库中的一些函数的库,但我正在使用Mono编译它以查看它在OS X上的运行情况.不幸的是,由于显而易见的原因它无法找到user32.dll库.
但我的问题是这个... OS X上有类似的库我可以使用吗?我特意寻找以下功能.
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
[DllImport("user32.dll")]
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
[DllImport("user32.dll")]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
Run Code Online (Sandbox Code Playgroud)
我认为安装WINE会有所帮助,但我希望尽可能避免这种情况.使用Ruby win32包装器也是一种选择吗?
从Mono网站:
如果您正在调用由您的平台提供的内容(通常是win32 API),则必须找到在所有目标平台上实现相同功能的方法.这可能意味着用托管等效项替换您的非托管调用,或者它可能意味着检测您正在运行的平台并调用Win32/*nix/OSX /等.当量.
(http://pinvoke.net有时可以帮助您找到与Win32 API调用相同的托管.)
如果您要调用自己的本机库,那么它取决于库的跨平台功能.如果您的本机库可以在所有目标平台上运行,那么您的应用程序应该没问题.如果没有,您可以使本机库跨平台兼容,在托管代码中执行操作,或通过检测您正在运行的平台来解决此问题.
它们还链接到Interop with Native Libraries上的页面.
通过pinvoke,一个结果是GetForegroundWindow引用mwinapi - 乍一看,这看起来不便携,所以你可能在寻找托管解决方案时运气不佳.
| 归档时间: |
|
| 查看次数: |
5659 次 |
| 最近记录: |