2

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

值为:00010010

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

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

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

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

IntPtr hwndParent = (IntPtr) 0x00010010

但它没有用。有任何想法吗?

4

5 回答 5

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();
于 2009-12-27T16:16:02.557 回答
1

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

IntPtr hwndParent = new IntPtr(0x00010010);
于 2009-12-27T16:18:47.140 回答
0

尝试:

 Convert.ToInt32("00010010", 16);
于 2009-12-27T16:16:42.400 回答
0

这应该工作

 var hwnd = new IntPtr(Convert.ToInt32({HexNumber}, 16));
于 2009-12-27T16:17:40.947 回答
0

既然您在谈论这个问题:您似乎不想在桌面顶部创建小部件/窗口,而是在另一个窗口顶部创建?如果是这样,你为什么不使用 FindWindow() 来 - 找到那个窗口?

为什么是常数值?

于 2009-12-27T16:21:05.870 回答