C#HEX值为IntPtr

时间:2009-12-27 16:11:17

标签: c# hex handle intptr

我有一个使用Spy ++找到的窗口的十六进制值。

值为:00010010

感谢我之前提出的问题的答案,我有这个代码:

IntPtr hwndf = this.Handle;
IntPtr hwndParent = FindWindow("WINDOW HERE", null); ;

SetParent(hwndf, hwndParent);
this.TopMost = false;

现在,据我所知,IntPtr hwndParent将包含WINDOW窗口的句柄。如何重写该行以使用我的十六进制句柄?我试过了:

IntPtr hwndParent = (IntPtr) 0x00010010

但它没有用。有什么想法吗?

5 个答案:

答案 0 :(得分:1)

嗯,相当于00010010的十六进制是0x12。所以你理论上可以使用

IntPtr hwndParent = (IntPtr) 0x12

Windows计算器可以进行转换。但是,这个值听起来不正确。你能更详细地解释一下你是如何得到这个价值的吗?

编辑:您的评论提到您正试图获取桌面窗口的句柄。有一个函数:GetDesktopWindow,它返回一个IntPtr。如果您感兴趣的只是桌面窗口,请使用它。

这是该函数的P / Invoke:

[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern IntPtr GetDesktopWindow();

答案 1 :(得分:1)

这应该有效

 var hwnd = new IntPtr(Convert.ToInt32({HexNumber}, 16));

答案 2 :(得分:1)

IntPtr的构造函数接受初始化参数:

IntPtr hwndParent = new IntPtr(0x00010010);

答案 3 :(得分:0)

尝试:

 Convert.ToInt32("00010010", 16);

答案 4 :(得分:0)

因为您正在谈论this问题:您似乎不想在桌面上创建窗口小部件/窗口,而是在另一个窗口的顶部? 如果是这种情况,为什么不使用FindWindow()来找到那个窗口?

为什么是恒定值?