2009-12-27 50 views
1

我有一個十六進制值的窗口,我發現使用Spy ++。C#HEX值到IntPtr

值是:00010010

感謝回答一個問題,我剛纔問的,我有這樣的代碼:

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

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

現在,據我瞭解,IntPtr的hwndParent將包含處理窗口在這裏窗口。我如何重寫該行以使用我的十六進制句柄?我試過了:

IntPtr hwndParent = (IntPtr) 0x00010010 

但它沒有工作。有任何想法嗎?

+1

值看起來像一個二進制數字可疑。你能確認這實際上是一個十六進制值嗎? – richardtallent

+1

對於一個應該代表句柄的指針,這是一個非常低的數字。我懷疑有些東西不符合你獲得的價值。 –

+0

它的桌面句柄:P – Ozzy

回答

1

那麼,00010010的十六進制等值是0x12。所以你理論上可以使用

IntPtr hwndParent = (IntPtr) 0x12 

Windows計算器可以做這個轉換。不過,這個數值聽起來並不正確。你能否更詳細地解釋你是如何得到這個價值的?

編輯:你的評論提到,你正試圖獲得桌面窗口的句柄。有一個函數:GetDesktopWindow,它返回一個IntPtr。如果您只想關注桌面窗口,請使用它。

這裏的P /調用該函數:

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

這應該工作

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

的IntPtr的構造函數接受一個初始化參數:

IntPtr hwndParent = new IntPtr(0x00010010); 
0

既然你在談論this問題:你似乎不想在桌面上創建一個窗口小部件/窗口,而是在另一個窗口的頂部,而不是? 如果是這樣的話,爲什麼不使用FindWindow()來找到那個窗口?

爲什麼恆定值?