アイコンより後ろに表示するには?


MRTN  2007-02-04 15:14:16  No: 97876

壁紙が設定不可の状態でピクチャーボックスなりFormをデスクトップのアイコンより後ろに表示させることはできるのでしょうか?
通常の最背面ではアイコンより前に表示されてしまいますのでなんとかアイコンより後ろに表示し偽壁紙を実現できればと思いまして・・・


mammal  2007-02-06 01:00:04  No: 97877

環境がないけど?

APIを使ってデスクトップに直接描いてしまう事はできないんでしょうか。


MRTN  2007-02-09 17:54:38  No: 97878

環境かいてませんでした。 すみません。
VB2005を使用しています。

もしAPIを使う場合は関数名など教えていただけないでしょうか?

よろしくお願いします。


あんび  2007-02-09 18:03:48  No: 97879

アイコンの機能は残した状態で、壁紙な感じなのですか?
デスクトップのhDCを取得して画面にハードコピーを描画
(デスクトップを画像としてフォームに貼る)
みたいな動作では駄目なんですよね?


魔界の仮面弁士  2007-02-09 19:00:04  No: 97880

無理矢理な方法ですが、
  (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 を有効化する方法がわからなかった…。(汗


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加