问题标签 [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 回答
56409 浏览

c# - 从 C# 访问 COM 对象的最佳方法

我打算使用作为 COM 对象公开的各种对象。为了使它们更易于使用,我想将它们包装为 C# 对象。最好的方法是什么?

0 投票
1 回答
41788 浏览

c# - 以编程方式移动鼠标光标

首先,我在http://swigartconsulting.blogs.com/tech_blender/2005/08/how_to_move_the.html找到了这段代码:

将以下代码粘贴到按钮的单击事件处理程序中:

这会将鼠标指针移动到按钮的中心。

这段代码很好用,但我似乎不知道如何扩展它。假设我有一个 Internet Explorer(嵌入在 Windows 窗体中)打开一个网页(一些我事先不知道的随机页面),其中有一个下拉列表框。我已经修改了上面的代码,将光标移动到下拉列表框(使用下面显示的鼠标单击方法下拉列表),并上下移动列表,突出显示每个项目作为鼠标指针过去了,但对于我的生活,我无法弄清楚如何让鼠标点击当前选定的项目以保持选择。我现在这样做的方式是下拉列表框刚刚关闭并且选择没有改变。我正在使用以下代码进行鼠标单击(确实使列表下拉):

我确定我在这里遗漏了一些简单的东西,但是对于我的生活来说,我无法弄清楚它是什么。提前谢谢大家。

鲍勃

0 投票
1 回答
215 浏览

internet-explorer - 确定 IE activex 控件何时重绘

我正在使用 spy++ 并注意到我嵌入在 Windows 窗体中的 IE 控件在重新绘制自身时会定期调用或发送 WM_PAINT。我试图弄清楚每次该控件发送 WM_PAINT 时如何在 C# 代码中执行 C# 方法。我知道此时的 pinvoke 足够危险。

提前致谢,

鲍勃

0 投票
2 回答
1678 浏览

asp.net - ASP.NET 上的 P/Invoke [DllImport]

我在使用 DLLImport 时遇到了一些并发问题,我有一个 Dll 提供了一些我需要通过网络发送的报告,所以我有这个:

在 Dll 端有很多变量和实例,然后返回报告的路径。

我现在拥有的代码对 PrintRep 的调用有一个锁定,它可以工作,但显然会使挂起的请求等待,有没有办法在没有锁定的情况下工作?因为如果我取出锁,我会收到几个“尝试在受保护的内存上写入”错误,并且 Dll 最终会挂起。

0 投票
4 回答
6603 浏览

c# - C# P/Invoke 结构问题

我正在尝试为 C API(本机 Win dll)编写 C# P/Invoke 包装器,通常这工作正常。唯一的例外是在 C 代码中将结构作为参数的特定方法。该函数在没有任何异常的情况下被调用,但它返回 false 表示执行失败。

在 API 头文件中,涉及的方法和结构定义如下:

我尝试使用以下代码创建 C# P/Invoke 包装器:

然后我尝试使用以下 C# 代码调用 EncodeMagstripe 方法:

这会导致抛出 ApplicationException,错误代码为 801,根据文档,这意味着“数据包含太多字符,无法用于所选的 Track 2 格式。”。但是,所选曲目格式最多应允许 39 个字符(我也尝试过较短的字符串)。

我怀疑问题的发生是由于我在 MSTrackData 定义中做错了什么,但我看不出这可能是什么。有没有人有什么建议?

0 投票
2 回答
3429 浏览

c# - 如何将 .NET 位图传递给本机 DLL?

这是我所拥有的:

  • 一个外部 DLL,我用 C 编写。这个 DLL 链接到 opencv。我不想直接从 C# 调用 OpenCV - 已经有大量 C 代码访问 OpenCV,它们将在 DLL 中使用。有一个导出函数:passbitmap(void *mem, size_t s);

  • 我要从中调用 DLL 的 AC# 项目。

  • 一个 System.Drawing.Bitmap 对象,我想通过它以某种方式将像素/位图数据传递给我的 DLL。

我猜它是某种 P/Invoke,但我从来没有做过,也不知道在这种情况下我该如何正确地做到这一点。我应该如何进行?

0 投票
1 回答
738 浏览

c# - 从 PInvoked OpenFileDialog (GetOpenFileName) 编组一个非托管的字符串数组

OpenFileDialog 返回一个指向内存的指针,该指针包含一系列以 null 结尾的字符串,后跟 final null 以指示数组的结尾。

这就是我从非托管指针取回 C# 字符串的方式,但我确信必须有一种更安全、更优雅的方式。

0 投票
1 回答
2120 浏览

windows - 从 C# 调用 MsiEnumRelatedProducts 崩溃

我从 C# 调用 MsiEnumRelatedProducts 时遇到了无穷无尽的麻烦。我在 p/invoke 定义上尝试了几种变体,但没有运气(out 和 ref)。我认为问题出在最后一个参数上,它是一个 LPTSTR,它应该指向一个 39 个字符长的字符串。

这是 pinvoke 和调用:

请注意,仅当传递的 UpgradeCode 至少安装了 1 个产品时才会发生崩溃。

0 投票
3 回答
6735 浏览

c# - 使用 RegisterHotKey api 调用时,为什么它接受 1、2、4 和 8 作为修饰符?

我参考这篇文章;

http://www.pinvoke.net/default.aspx/user32/RegisterHotKey.html

我的问题是,api如何RegisterHotKey知道 , 1, 2,48Windows 键?因为 ctrl、shift 和 menu (alt) 的键码会返回完全不同的键值?RegisterHotKey以及它正在检查的函数中到底发生了什么:

它在这里做什么?

0 投票
1 回答
1818 浏览

c# - 返回字符串的 C# PInvoke Delphi dll 仅在 IIS 中失败

我有一个导出以下函数的 Delphi 7 dll:

该函数在 C# 中导入如下:

当我从 WPF 应用程序调用导入时,它工作正常,我看到我的测试字符串在 out 参数中返回。当我从 Cassini 托管的站点尝试相同的操作时,它也可以正常工作。但是,当我从 IIS7 中托管的站点运行该方法时,它会失败。如果我注释掉 GetMem 和 StrPCopy 行,该函数在 IIS 中返回“true”。如何在 IIS 中托管的站点中从 Delphi 将一些字符串数据返回到 C#?