1

長いタイトルですが、簡単な問題です。

ウィンドウをデストップ(またはピン)に貼り付けようとしていますが、次のようにできます。

    [DllImport("User32.dll")]
    static extern IntPtr FindWindow(String lpClassName, String lpWindowName);
    [DllImport("user32.dll", SetLastError = true)]
    static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
    [DllImport("user32.dll")]
    static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

        IntPtr pWnd = FindWindow("Progman", null);
        pWnd = FindWindowEx(pWnd, IntPtr.Zero, "SHELLDLL_DefVIew", null);
        pWnd = FindWindowEx(pWnd, IntPtr.Zero, "SysListView32", null);
        IntPtr tWnd = this.Handle;
        SetParent(tWnd, pWnd);

これは正常に機能しますが、透過性または不透明度を変更することはできません。

CreateWindowEx を使用して層状の透明なウィンドウを作成することはできますが、この方法ではデスクトップにピン留めすることはできません。

これを行う方法を知っている人はいますか?

感謝!

4

1 に答える 1

1

階層化されたウィンドウとして作成できるのは、最上位のウィンドウだけです。あなたのアプローチでは、デスクトップ ウィンドウに子ウィンドウを作成しているため、階層化できません。

ウィンドウをデスクトップに「貼り付ける」/「ピン留めする」とはどういう意味かを説明したほうがよいかもしれません。デスクトップ上の特定の位置にウィンドウを設定し、常にそこに保持したいと思っていると思いますが、それ以上に欠けているものがあるに違いありません。それ以外の場合、ウィンドウを画面上の特定の座標に配置するだけではうまくいかないのはなぜですか?

于 2010-01-09T10:55:23.640 に答える