错误:从“Foo*”强制转换到“无符号整数”失去精确度
我正在尝试将指针强制转换为 int (或无符号 int),无论我尝试什么,它都不起作用。 我尝试过 static_cast(obj)、reinterpret_cast(obj) 以及 C 风格…
将 const char* 字符串从非托管传递到托管
我有两个通信组件 - 一个是托管的,另一个是非托管的。托管需要从非托管实现检索字符串(相同的字符串或只是一个副本)。我尝试了以下代码。 // Unman…
Windows 消息中的 IntPtr 到 String 转换
我因挂钩窗口消息而遇到麻烦。我需要检测窗口文本(标题)更改,因此我拦截感兴趣窗口的 WM_SETTEXT 消息(我这样做是因为在创建窗口时未指定窗口标题…
使用 XmlSerializer 序列化 IntPtr
我想知道为什么 XmlSerializer 实现不支持 IntPtr 类型。当我尝试序列化包含 IntPtr 类型字段的类时,序列化失败,告诉我不支持 IntPtr,并忽略该成员…
IntPtr 和避免不安全代码
我有一个需要 IntPtr 的外部库。有没有安全的方法可以做到这一点... int BytesWritten = 0 Output.WriteBytes(buffer, new IntPtr(&BytesWritten))…
如何在 C# 中封送 int*?
我想在非托管库中调用此方法: void __stdcall GetConstraints( unsigned int* puiMaxWidth, unsigned int* puiMaxHeight, unsigned int* puiMaxBoxes…
可以从 int[] 数组中获取 IntPtr 吗?
问候。 在 C# 中:如果我有一个这样声明的 int[] 数组, int[] array = new array[size] 有没有办法从该数组中获取 IntPtr? 问题是我正在使用 EmguCV…
使用 c# 的半非托管代码
public delegate void KeyboardHookCaptureHandler(KeyboardHookEventArgs keyboardEvents) public class KeyboardHookEventArgs : EventArgs { priva…
PostMessage 无法传递字符串 C#
这是我的原型: [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern bool PostMessage(int hhwnd, uint msg, IntPtr wparam, I…
System.IO.UnmanagedMemoryStream - 为什么使用 Byte* 而不是 IntPtr
有人知道为什么 BCL 团队选择在 UnmanagedMemoryStream 的构造函数中使用 Byte* 而不是 IntPtr 吗?这迫使您使用不安全的上下文来构造类型。看起来他…
C# 十六进制值到 IntPtr
我有一个使用 Spy++ 找到的窗口的十六进制值。 该值是: 00010010 感谢我之前提出的问题的答案,我有这样的代码: IntPtr hwndf = this.Handle IntPtr…
C# 中非托管代码的函数指针
我有一个 dll,它接受一个结构,该结构包含指向函数的指针以执行回调。 如何获取应用程序函数的 IntPtr 来构建结构? [StructLayout(LayoutKind.Seque…
.NET Interop IntPtr 与 ref
可能是一个菜鸟问题,但互操作还不是我的强项之一。 除了限制重载的数量之外,还有什么理由我应该像这样声明我的 DllImports: [DllImport("user32.dl…
C# - Marshal.Copy() 导致缓冲区损坏
我收到一个 IntPtr 和一个 int 指定它指向的字节数。数据可以包含任何字符,包括 null、EOL 等。尝试以下操作时,缓冲区已损坏: //buffer is the Int…