转换/转换字符串(从文本框)到IntPtr C#

时间:2015-07-14 17:26:35

标签: c# casting handle intptr

我有一个文本框,我想输入(手动)句柄(http://i.imgur.com/S1bCyPy.png

我的问题:要从文本框中获取值,我需要这样做:

textBoxHandle.Text;

但是当我将Handle初始化为IntPtr(句柄)时,这不起作用:

IntPtr h = new IntPtr(textBoxHandle.Text);

我尝试过做

(IntPtr) textBoxHandle.Text

还有我在这里读过的许多其他选项,如Marshal.StringToHGlobalAnsi Method,但他们不会工作/他们改变内容。

我的问题:如何从文本框中的字符串(使用句柄格式)获取IntPtr(句柄)?

编辑:在文本框中我会写例如0x00040C66。

最终代码应为:

IntPtr hWnd = new IntPtr(0x00040C66);

但是改变文本框中值的IntPtr。

编辑:我的问题被标记为重复(How can I convert an unmanaged IntPtr type to a c# string?),但它不一样。它不是从IntPtr到String我想要的。我需要相反的,从String到IntPtr。

1 个答案:

答案 0 :(得分:5)

您需要先将字符串解析为intlong,然后构建IntPtr

IntPtr handle = new IntPtr(Convert.ToInt32(textBoxHandle.Text, 16));
// IntPtr handle = new IntPtr(Convert.ToInt64(textBoxHandle.Text, 16));

Convert.ToInt32ToInt64的第二个参数指定数字的基数,因为您正在解析十六进制数字字符串,所以它必须是16。