我有一个文本框,我想输入(手动)句柄(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。
答案 0 :(得分:5)
您需要先将字符串解析为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。