壁紙が設定不可の状態でピクチャーボックスなりFormをデスクトップのアイコンより後ろに表示させることはできるのでしょうか?
通常の最背面ではアイコンより前に表示されてしまいますのでなんとかアイコンより後ろに表示し偽壁紙を実現できればと思いまして・・・
環境がないけど?
APIを使ってデスクトップに直接描いてしまう事はできないんでしょうか。
環境かいてませんでした。 すみません。
VB2005を使用しています。
もしAPIを使う場合は関数名など教えていただけないでしょうか?
よろしくお願いします。
アイコンの機能は残した状態で、壁紙な感じなのですか?
デスクトップのhDCを取得して画面にハードコピーを描画
(デスクトップを画像としてフォームに貼る)
みたいな動作では駄目なんですよね?
無理矢理な方法ですが、
(1) FindWindow("Progman", "Program Manager") で IntPtr を取得。
(2) FindWindowEx を使って、(1) の子にあたる "SHELLDLL_DefView" の IntPtr を取得。
(3) FinrdWindowEx を使って、(2) の子にあたる "Internet Explorer_Server" の IntPtr を取得。
(4) SetParent を使って、強制的に自フォームを (3) の子ウィンドウにしてしまう。
というのはどうでしょう? (VB6 + XP Pro で検証しましたが、VB2005 では未検証です)
ActiveDesktop を有効にしていない場合は、(3) で IntPtr が得られないので、
あらかじめ、画面のプロパティのデスクトップ項目で、Active Desktop を有効化
しておくとか、もしくは、IActiveDesktop インターフェイスあたりを使うとか。
# Vista 環境では、ActiveDesktop を有効化する方法がわからなかった…。(汗
ツイート | ![]() |