问题标签 [pinvoke]

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.

0 投票
2 回答
2392 浏览

c# - 正确使用 P/Invoke

我需要从 c# 调用一个外部 dll。这是标题定义:

我在 C# 中添加了枚举和调用:

这会生成 AccessViolationException。我知道 dll 正在“工作”,因为我还添加了一个GetHandle返回hHandle上述内容的调用。我试图将参数更改为int( ref int watchmode) 但得到相同的错误。有谁知道我如何 PInvoke 上述调用?

0 投票
2 回答
38409 浏览

.net - C# 中的元帅“char *”

给定 DLL 中的以下 C 函数:

您将如何将这个函数 P/Invoke 到 C# 中并正确编组 char *。.NET 似乎知道如何执行 LPCTSTR,但是当我无法弄清楚在调用此函数时不会导致 NotSupportedException 触发的任何封送处理时。

0 投票
2 回答
4244 浏览

wpf - 为什么处理 WM_NCCALCSIZE 会导致我的窗口跳转?

我有一个捕捉到屏幕边缘的 WPF 应用程序(如果您在屏幕边缘的 20 像素范围内,我只需设置窗口的 .Top 或 .Left),但我最近添加了 WPF SDK 团队提供的一些代码到“窗口镶边的混乱”,虽然它工作得很好(截图),但它导致“快照”意外移动窗口(例如:当它应该直接向下捕捉到底部时它会跳到左边)

我将其范围缩小到他们对 WM_NCCALCSIZE 的处理......这真的很奇怪,因为他们基本上什么都不做,他们只是说他们处理它,然后返回 0。

根据 WM_NCCALCSIZE 的文档,这应该只是导致整个窗口被视为客户端(没有非客户端边缘),但不知何故,这也意味着每当我的 snap-to 代码将窗口向下移动到屏幕底部,它也向左移动了大约 134 像素 ...(移动到其他边缘也有类似的副作用),只要我按住鼠标拖动它,它就会从它应该在的位置来回闪烁。如果我将 WM_NCCALCSIZE 处理注释掉,则 snap-to 会按应有的方式工作(但表单看起来不正确)。

我已经在 WM_NCCALCSIZE 处理程序中尝试了所有我能做的事情,但我无法阻止它向左跳......当然,WM_NCCALCSIZE 只有在窗口大小发生变化时才会被调用,所以我不明白它是如何导致的这首先!

PS如果您想实际查看代码,它已经在 CodePlex 上,在两个文件中,查找_HandleNCCalcSizeOnWindowLocationChanged

0 投票
1 回答
1515 浏览

winforms - RichTextBox 和下划线颜色

有什么办法可以改变 a 中下划线的颜色RichTextBox吗?我已经尝试过了,但它似乎不起作用。有人知道这些枚举值是从哪里来的吗?没有看到任何文档。

谢谢。

0 投票
2 回答
2389 浏览

c# - 通过指针使用 P/Invoke 在 C# 中实例化 C++ 类

我正在从 C# 应用程序中的非托管 DLL mscorpe.dll 导入 CreateICeeFileGen() 函数,以生成 PE 文件。此函数返回指向此处定义的 C++ 对象的指针,有什么方法可以通过 C# 访问此类中的字段,还是需要编写非托管包装 DLL?

我目前使用的代码如下:-

注意:我知道你可以用 .net 库做类似的事情,但我需要使用非托管库来实现我的目的。

0 投票
3 回答
7276 浏览

c# - DLLImport Int** - 如果可以的话怎么做

我正在尝试使用第三方 DLL,它需要一个 int** 作为该方法的参数之一。它将参数描述为指向内存分配的指针的地址。

很抱歉有任何混淆。我认为参数是双向的。DLL 用于与 FPGA 板通信,方法是在主机 PC 和 PCI 板之间建立 DMA 传输。

0 投票
1 回答
2029 浏览

.net - 我应该在 dllimport 中使用 Ansi 还是 Unicode 字符集?

当您使用 DllImport 导入函数时,您可以指定要使用的 CharSet。我注意到在 C#、C++ 和 Visual Basic 中,.Net 运行时默认使用 Ansi 而不是 Unicode。因此,对于任何具有 A 和 W 版本的系统调用,默认情况下都会调用 A 版本。.Net 在内部使用 unicode,如果我没记错的话,新版本的 windows 也会将所有内容都转换为 unicode,因此这意味着大量额外的编组开销。

我已经养成了总是在这里指定 unicode 的习惯,这是正确的做事方式还是会导致问题?

0 投票
1 回答
3353 浏览

c# - C# 使用来自 CPP 的未知数量的 args 调用 CPP 函数

我在 CPP 中有一个具有以下原型的函数:

我使用 DLLImport 属性从 C# 导入它。问题是:如何在 C# 中定义原型(在 DLLImport 属性下)?我如何将参数传递给这个函数?谢谢

0 投票
3 回答
1214 浏览

c# - C#中的指针数学

我正在尝试使用一些 pinvoke 代码来调用 C 函数。该函数用数据填充缓冲区。

该结构设置为长度的 DWORD,后跟一个字符串。如何从 IntPtr 中提取字符串?

0 投票
4 回答
8330 浏览

.net - .net 的 CUDA?

我知道有很多 CUDA 语言绑定,比如 PyCUDA,但是 .Net 有什么好的绑定吗?我见过的只有这一个,但我想知道是否还有其他的。