问题标签 [intptr]

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 回答
1729 浏览

c# - 指向 C# 中非托管代码的函数的指针

我有一个 dll,它接受一个结构,该结构包含一个指向函数的指针以执行回调。

如何获得一个 IntPtr 到我的应用程序的函数来构建结构?

这是接受 OPERATION 结构的委托

0 投票
5 回答
7265 浏览

c# - C# HEX 值到 IntPtr

我有一个使用 Spy++ 找到的窗口的十六进制值。

值为:00010010

感谢我之前提出的问题的答案,我有以下代码:

现在,据我了解,IntPtr hwndParent 将包含窗口 WINDOW HERE 的句柄。如何重写该行以使用我的十六进制句柄?我试过:

但它没有用。有任何想法吗?

0 投票
3 回答
248 浏览

c# - 如何避免到处创建新的包装对象?

我有各种包装IntPtr. 它们不存储自己的数据(指针除外),而是使用属性和方法通过非托管库在指针处公开数据。它工作得很好,但我已经到了需要能够从其他包装器对象中引用这些包装器对象的地步。例如:

现在,我可以简单地返回一个new Node(parentPtr)(如上),但有可能拥有数万个节点。这不是一个坏主意,因为多个包装器对象最终可能会引用同一个IntPtr

我能做些什么来解决这个问题?我考虑过使用一个静态KeyedCollection类,它使用每个IntPtr作为键。所以,不用Node每次都返回一个新的,我可以查一下。但这会带来线程问题,对吧?

有没有更好的办法?

0 投票
1 回答
899 浏览

.net - System.IO.UnmanagedMemoryStream - 为什么是 Byte* 而不是 IntPtr

任何人都知道为什么 BCL 团队选择在 UnmanagedMemoryStream 的构造函数中使用 Byte* 而不是 IntPtr?这会迫使您使用不安全的上下文来构造类型。似乎他们可以使用 IntPtr 并且不会强制使用不安全的上下文。

0 投票
3 回答
458 浏览

c# - 使用 c# 的半非托管代码

所以我不知道这段代码是什么意思,即使它是我程序的核心。它挂钩一个键盘按下事件并将其发送到我的程序。任何人都可以花宝贵的时间向我解释一些事情。我了解 args 类,因此您可以跳过它。我最感兴趣的是什么是委托、什么是IntPtr以及这两种方法以及它们逐行执行的操作。

谢谢,如果有人有时间

0 投票
2 回答
6533 浏览

c# - PostMessage 无法传递字符串 C#

这是我的原型:

以下是我的使用方式:

在另一个线程中,我可以截获此消息,但是当我尝试使用以下命令让 bob 回来时:

我没有在 str 中得到 bob。

我认为这一定是因为我在一个线程的堆栈上引用了“bob”字符串,并且该引用在另一个线程的堆栈中绝对没有意义。但如果是这样的话,这些 wparam 和 lparam 指针真的只用于在同一个线程中传递的消息吗?

编辑* 更正:通过线程我的意思是进程。这是在进程而不是线程之间传递字符串的问题。

0 投票
2 回答
16433 浏览

c# - 可以从 int[] 数组中获取 IntPtr 吗?

问候。

在 C# 中:如果我有一个这样声明的 int[] 数组

有没有办法从这个数组中获取 IntPtr?

问题是我正在使用 EmguCV 框架,并且有一个构造函数来创建一个将 IntPtr 用于像素数据的图像,以便从数组 (int[]) 构建图像。

顺便说一句,如果有人能告诉我如何计算步幅,那就太好了。

0 投票
2 回答
5688 浏览

c# - 如何声明一个 IntPtr?

我有一个窗口手柄选择器,它说我的手柄是 0094167C。当我在 c# 中声明变量时,此代码中的字母会出错。如何申报?

公共常量 IntPtr WinHandle = 0094167C;

0 投票
1 回答
4562 浏览

.net - 如何在 C# 中编组 int*?

我想在非托管库中调用此方法:

我的解决方案:

  • 委托定义:

    [UnmanagedFunctionPointer(CallingConvention.StdCall)] 私有委托 void GetConstraintsDel(UIntPtr puiMaxWidth, UIntPtr puiMaxHeight, UIntPtr puiMaxBoxes);

  • 方法的调用:

    /li>

它有效,但我必须允许“不安全”标志。有没有不安全代码的解决方案?或者这个解决方案可以吗?我不太了解使用 unsafe 标志设置项目的含义。

感谢帮助!

0 投票
3 回答
2812 浏览

c# - IntPtr 和避免不安全的代码

我有一个采用 IntPtr 的外部库。有什么安全的方法可以做到这一点...

...无需使用“不安全”代码?我对 IntPtrs 不太熟悉,但我想做这样的事情:

...以这样一种方式,我不需要使用 /unsafe 进行编译。

我无法更改 WriteBytes 函数,它是一个外部函数。

'ref int' 和 IntPtr 之间似乎应该有某种类型的转换,但我没有找到它的运气。