C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Windows7+AeroがOnの状態でFormを最背面に


(過去ログ 90 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■53854 / inTopicNo.1)  Windows7+AeroがOnの状態でFormを最背面に
  
□投稿者/ まぐねしうむ (110回)-(2010/09/28(Tue) 14:25:14)

分類:[VB6 以前] 

お世話になります。
VB6でFormを最背面にするコードを書いているのですが
Windows7+Aero GlassがOnの状態に限りFormが最背面にならず
困っています。

他のHP等を見るとこの環境では最背面の際に使用するProgram Managerが
WorkerWに置き換わっているとのことなので以下のコードを試して見ましたが
正常に動作しません。

書いたコードWorkerWのウインドウハンドルが0が帰ってきておりますので
FindWindowExが失敗しているのが原因だと思うのですが解決方法が分かりません。
なお、Aeroを切った環境では動作しています。

Private Sub Form_Load()

'Win7+Aero
hDeskTopHandle = FindWindowEx(0, 0, vbNullString, "WorkerW") ★ここで0が帰る

If hDeskTopHandle = 0 Then
	hDeskTopHandle = FindWindowEx(0, 0, vbNullString, "Program Manager")
End If

' 正しく取得できた場合は、Program Manager を親ウィンドウに設定する
If hDeskTopHandle <> 0 Then
	ret = SetParent(Me.hWnd, hDeskTopHandle)
End If

End Sub

どなたかよろしければ教えてください。

引用返信 編集キー/
■53863 / inTopicNo.2)  Re[1]: Windows7+AeroがOnの状態でFormを最背面に
□投稿者/ まぐねしうむ (111回)-(2010/09/28(Tue) 15:41:25)
自己レスです。

参考にしたHPを乗せ忘れましたので貼り付けます
http://www.orangemaker.sakura.ne.jp/labo/memo/sdk-mfc/#Windows7 のデスクトップウィンドウ

引用返信 編集キー/
■53872 / inTopicNo.3)  Re[2]: Windows7+AeroがOnの状態でFormを最背面に
□投稿者/ まぐねしうむ (112回)-(2010/09/28(Tue) 17:44:47)
すいません。
理由は分かりませんが、下記のコードで動きました。
"Progman"でFindWindowExをすると動くみたいです。
お騒がせしました。

Private Sub Form_Load()

Dim progmanHandle As Long
Dim workerWHandle As Long
Dim ret As Long

'Formサイズ変更
Me.Width = Screen.Width
Me.Height = Screen.Height

' 正しく取得できた場合は、Program Manager を親ウィンドウに設定する
progmanHandle = FindWindowEx(0, 0, "Progman", vbNullString)
If progmanHandle <> 0 Then
ret = SetParent(Me.hWnd, progmanHandle)
Exit Sub
End If

' 正しく取得できた場合は、WorkerW を親ウィンドウに設定する
workerWHandle = FindWindowEx(0, 0, "WorkerW", vbNullString)
If workerWHandle <> 0 Then
ret = SetParent(Me.hWnd, workerWHandle)
Exit Sub
End If


End Sub
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -