Convert/Cast 字符串(从文本框)到 IntPtr C#

Convert/Cast String (from a textbox) to IntPtr C#

我有一个文本框,我想在其中输入(手动)句柄 (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。

需要先将字符串解析成intlong,再构造IntPtr.

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

Convert.ToInt32ToInt64 的第二个参数指定了数字的基数,因为你正在解析一个十六进制数字字符串,它需要是 16。