我有一个使用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
但它没有用。有什么想法吗?
答案 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()来找到那个窗口?
为什么是恒定值?