2

Spy++ を使用して見つけたウィンドウに 16 進値があります。

値: 00010010

以前に尋ねた質問への回答のおかげで、次のコードがあります。

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

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

今、私が理解している限り、IntPtr hwndParent にはウィンドウ WINDOW HERE へのハンドルが含まれます。16 進ハンドルを使用するようにその行を書き直すにはどうすればよいですか? 私は試した:

IntPtr hwndParent = (IntPtr) 0x00010010

しかし、うまくいきませんでした。何か案は?

4

5 に答える 5

1

00010010 に相当する 16 進数は 0x12 です。したがって、理論的には使用できます

IntPtr hwndParent = (IntPtr) 0x12

Windows 電卓はその変換を行うことができます。ただし、その値は正しくないように聞こえます。どのようにしてその値を取得したかを詳しく説明できますか?

編集:あなたのコメントは、デスクトップ ウィンドウへのハンドルを取得しようとしていると述べています。そのための関数があります: IntPtrを返す GetDesktopWindow です。デスクトップウィンドウだけに興味がある場合は、それを使用してください。

その関数の 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 に答える