сам*_*.D. 3 c# casting handle intptr
我有一个文本框,我想输入(手动)一个句柄(http://i.imgur.com/S1bCyPy.png)
我的问题:要从文本框中获取值,我需要这样做:
textBoxHandle.Text;
Run Code Online (Sandbox Code Playgroud)
但是当我将我的Handle初始化为IntPtr(句柄)时,这不起作用:
IntPtr h = new IntPtr(textBoxHandle.Text);
Run Code Online (Sandbox Code Playgroud)
我试过了
(IntPtr) textBoxHandle.Text
Run Code Online (Sandbox Code Playgroud)
还有我在这里读过的许多其他选项,如Marshal.StringToHGlobalAnsi方法,但它们不起作用/它们改变了内容.
我的问题:如何从文本框中的字符串(使用句柄格式)获取IntPtr(句柄)?
编辑:在文本框中,我会写0x00040C66.
最终的代码应该是:
IntPtr hWnd = new IntPtr(0x00040C66);
Run Code Online (Sandbox Code Playgroud)
但是从文本框中更改IntPtr的值.
编辑:我的问题被标记为重复(如何将非托管IntPtr类型转换为ac#string?)但它不一样.它不是从IntPtr到String我想要的.我需要相反的,从String到IntPtr.
您需要将字符串解析为a int或longfirst,然后构造IntPtr.
IntPtr handle = new IntPtr(Convert.ToInt32(textBoxHandle.Text, 16));
// IntPtr handle = new IntPtr(Convert.ToInt64(textBoxHandle.Text, 16));
Run Code Online (Sandbox Code Playgroud)
的第二个参数Convert.ToInt32和ToInt64指定数量的基数,因为你解析一个十六进制数字字符串,它需要16.