2009-12-27 5 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 может сделать это преобразование. Однако это значение звучит не совсем правильно. Можете ли вы более подробно объяснить, как вы получили эту ценность?

EDIT: В своем комментарии упоминается, что вы пытаетесь получить дескриптор окна рабочего стола. Для этого есть функция: GetDesktopWindow, которая возвращает IntPtr. Если все, что вас интересует, это окно рабочего стола, используйте это.

Вот P/Invoke для этой функции:

[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(), чтобы найти это окно?

Почему постоянная величина?