2009-12-27 8 views
1

J'ai une valeur hexadécimale à une fenêtre je l'ai trouvé en utilisant Spy ++.C# HEX Valeur à IntPtr

la valeur est: 00010010

Merci à une réponse à une question que je posais plus tôt, j'ai ce code:

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

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

Maintenant, pour autant que je le comprends, IntPtr hwndParent contiendra la gérer à la fenêtre FENÊTRE ICI. Comment puis-je réécrire cette ligne pour utiliser ma poignée hexagonale? J'ai essayé:

IntPtr hwndParent = (IntPtr) 0x00010010 

Mais cela n'a pas fonctionné. Des idées?

+1

Valeur ressemble étrangement à un nombre binaire. Pouvez-vous confirmer que c'est en fait une valeur hexadécimale? – richardtallent

+1

C'est un nombre vraiment bas pour un pointeur supposé représenter un handle. Je soupçonne que quelque chose ne va pas avec la valeur que vous obtenez. –

+0

Son le handle sur le bureau: P – Ozzy

Répondre

1

Eh bien, l'équivalent hexadécimal de 00010010 est 0x12. Donc, vous pouvez théoriquement utiliser

IntPtr hwndParent = (IntPtr) 0x12 

La calculatrice Windows peut faire cette conversion. Cette valeur ne semble pas correcte, cependant. Pouvez-vous expliquer plus en détail comment vous avez obtenu cette valeur?

EDIT: Votre commentaire mentionne que vous essayez d'obtenir une poignée à la fenêtre de bureau. Il y a une fonction pour cela: GetDesktopWindow, qui renvoie un IntPtr. Si tout ce qui vous intéresse est la fenêtre du bureau, utilisez-le.

Voici le P/Invoke pour cette fonction:

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

Cela devrait fonctionner

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

Le constructeur de IntPtr accepte un paramètre d'initialisation:

IntPtr hwndParent = new IntPtr(0x00010010); 
0

Puisque vous parlez this question: Il vous semble que vous ne voulez pas créer un widget/fenêtre sur le dessus du bureau, mais au-dessus d'une autre fenêtre à la place? Si c'est le cas, pourquoi n'utilisez-vous pas FindWindow() pour trouver cette fenêtre?

Pourquoi une valeur constante?