问题标签 [dllimport]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何处理失败的 DllImport?
我正在尝试编写一个 C# 托管类来包装 SHGetKnownFolderPath,到目前为止它可以在 Vista 上运行,但由于在 shell32.dll 中找不到正确的函数,因此在 XP 上崩溃,正如预期的那样。
我想设置它,这样如果使用 XP,我可以使用 System.Environment.GetFolderPath 回退到一个(公认的 hacky)解决方案。(或者,如果它在 shell32 中找不到函数,那就更好了。)
除了条件编译之外,还有什么方法可以做到这一点?
我当前的代码如下所示:
c# - 复杂的 (?) pinvoke 情况 - 避免函数重载
概括:
我有一堆必须从 C# 调用的 C 函数。我目前的工作解决方案基于函数重载,我想知道是否有更优雅的解决方案。
C的东西:
头文件中的某处
函数示例
在 C 中,该函数的使用应与此类似:
C# 的东西:
现在我在 C# 中执行以下操作:
接着:
问题
由于我是 C# 菜鸟,我想知道这是否是最好的方法。特别是我想知道是否有办法重载函数。
c# - 如何用浮点值“填充” IntPtr 参数?
我正在使用 dllImport 在 C# .NET 中使用 C 库。该库中的一种方法使用数据类型 void* 作为参数。我发现,我可以在 C# 中使用与 void* 匹配的数据类型 IntPtr。
现在我根本不知道如何设置这个 IntPtr 参数的值。事实上,我想在这个参数中放入一个浮点值。我该怎么做?
提前感谢您的任何想法。西蒙娜
windows - 在 Windows 中激活注入的 DLL
我目前正在使用 SetWindowsHookEx 将我的 DLL 注入另一个进程,但是它不会立即加载。我注意到,如果我手动单击窗口,它将被加载,所以我猜它正在等待某种类型的消息来获得激活滚动?我目前正在使用
但这似乎是一种 hack,并不总是有效(即 otherAppHwnd 被最小化到任务栏。
任何指针都会很棒!
编辑:这是一个 CBT 钩子
add-in - C#:Excel 2007 插件,如何挂钩 Windows 激活和停用事件
我正在编写一个 Excel 2007 插件。使用 VS2008 和 .net 3.5,C#。
我发现了 Microsoft.Office.Interop.Excel.Application 的 WindowActivate 和 WindowDeActivate 事件。
令人惊讶的是,WindowActivate 和 Deactivate 仅在我在两个 Excel Windows 之间切换时触发。如果我切换到记事本,我希望 Deactivate 被触发,但它没有发生。如果我切换到 excel 窗口,从记事本以同样的方式,我希望激活被触发,但它没有发生。看起来该行为表明窗口是 MDI 子窗口。
现在我要做的是获取 Excel 主窗口的 HWnd 并使用 dllimport 功能挂钩窗口激活和停用。
任何人都可以在这方面指导我。
问候
c# - 从包含指针的 C# 调用 Delphi DLL 不工作
我有一个这样定义的delphi dll
我像这样转换为C#:
电话是这样的:
它要求打开一个通道并将其写入 conn。它返回假。所以我过不去。conn 对象返回 null。我知道服务器正在接听我的电话。
我认为这与类型错误的 struct C# 有关。我对不受管理的东西很陌生,所以如果有人可以帮助通过。
我只有dll。谢谢
c# - 如何扫描目录中的程序集并加载它们?
我想扫描目录中尚未在项目中引用的任何程序集,然后加载实现 IMyInterface 的类的所有实例。
我知道Assembly.LoadFile方法可以帮助我,但我如何确定我正在加载的程序集是否已经被静态引用?我不想两次加载任何程序集。
c# - C++ 如何导入用 C# 制作的 DLL?
我有一个用 C# 制作的 DLL,这个 DLL 包含一些类似 Creator 的类。
我需要加载这个 DLL 并在 C++ 非托管中使用 Creator 类,
那么有什么方法可以创建该实例,或者我必须只加载公开的函数吗?
我需要这样的东西:
p>这可能吗?
c# - C Dll 导入 C#
您如何将结构写入内存中的某个位置,该位置将能够通过 ref 调用被引用并且不会被更改。
我一直在传递 ref 因为我需要一个指针来与 dll 通信并且值正在发生变化。不通过 ref 会引发“尝试读取或写入受保护的内存”错误。
想法?
c# - 附加依赖项/DLL/库
我正在研究 OpenCV 库,这个库是用 C++ 编写的,我编写了一个简单的 win32 应用程序。我在其中实现了一些简单的功能。这个功能需要额外的库,我正在使用项目->属性->配置属性->链接器->输入->附加依赖项来指定附加的库文件。
现在我想用 C# 编写一个使用上述项目的 DLL 的应用程序,我正在使用 [DllImport] 方法使用这个 DLL。当我在 Visual Studio 之外运行应用程序时,它会为我正在导入的 Dll 显示“DllNotFoundException”。我已将 dll 文件放在 build 和 code 文件夹中。
谁能建议我为什么会出现这个问题?是否存在依赖/附加库的问题?
请告诉我如何添加其他库。我也将这些额外的 DLL 放在构建文件夹中,但它仍然给我错误。
我尝试了另一个没有额外依赖的简单 dll,它没有给我任何错误,看起来有一些依赖库问题。请建议我如何解决问题