我有一个文本框,我想在其中输入(手动)一个句柄(http://i.imgur.com/S1bCyPy.png)
我的问题:要从文本框中获取值,我需要这样做:
textBoxHandle.Text;
但是当我将 Handle 初始化为 IntPtr(句柄)时,这不起作用:
IntPtr h = new IntPtr(textBoxHandle.Text);
我试过
(IntPtr) textBoxHandle.Text
还有许多我在这里阅读过的其他选项,例如 Marshal.StringToHGlobalAnsi 方法,但它们不起作用/它们更改了内容。
我的问题:如何从文本框中的字符串(具有句柄格式)中获取 IntPtr(句柄)?
编辑:例如,在文本框中我会写 0x00040C66。
最终代码应该是:
IntPtr hWnd = new IntPtr(0x00040C66);
但是从文本框中更改 IntPtr 的值。
编辑:我的问题被标记为重复(How can I convert an unmanaged IntPtr type to a c# string?)但它不一样。这不是我想要的从 IntPtr 到 String 。我需要相反的东西,从 String 到 IntPtr。
最佳答案
首先需要将字符串解析为int
或long
,然后构造IntPtr
。
IntPtr handle = new IntPtr(Convert.ToInt32(textBoxHandle.Text, 16));
// IntPtr handle = new IntPtr(Convert.ToInt64(textBoxHandle.Text, 16));
Convert.ToInt32
和 ToInt64
的第二个参数指定数字的基数,因为您正在解析一个十六进制数字字符串,它需要为 16。
关于c# - 将字符串(从文本框)转换/转换为 IntPtr C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31413393/