投稿日 | : 2003/04/09(Wed) 19:43 |
投稿者 | : peta |
Eメール | : |
URL | : |
タイトル | : Re^6: コモンダイアログの表示(WinXPでは) |
> > (1) ウィンドウハンドル hDlg, hwndDef, hwndLV, hwndTB の内、
> > 1つ以上がゼロである。
>
> ハンドルはすべて取得できております。
>
> > (2) ツールバー詳細ボタンIDが &HA004 ではない。
>
> 詳細ボタンはWin98とWinXPでは少し違うようなので多分こちらかと思うのですが
> 詳細ボタンのIDはどのようにして調べればいいのでしょうか?
詳細ボタンを押すと、hDlgにWM_COMMANDが送られるので、
そのwParamのLOWORD値を調べれば判ります。
' ツールバー詳細ボタンID確認用に改造
Private Function FileDlgHookProc(ByVal nCode As Long, _
ByVal wParam As Long, _
cwp As CWPSTRUCT) As Long
If (nCode >= 0) Then
Static hDlg As Long
Static hwndLV As Long
Static fReadyLV As Boolean
Select Case cwp.Message
Case WM_NOTIFY
Dim hwndDef As Long
' -----------------
' Dim hwndTB As Long ' コメントアウト
Static hwndTB As Long ' Static に変更
' -----------------
If (hwndLV = 0) Then
hDlg = GetParent(cwp.hwnd)
hwndDef = FindWindowEx(hDlg, 0, "SHELLDLL_DefView", vbNullString)
hwndLV = FindWindowEx(hwndDef, 0, "SysListView32", vbNullString)
If (hwndLV <> 0) Then
hwndTB = FindWindowEx(hDlg, 0, "ToolBarWindow32", vbNullString)
' ------- ここから、コメントアウト -------
' Call SendMessage(hDlg, WM_COMMAND, &HA004&, ByVal hwndTB)
' Call SetLVColumnWidth(hwndLV, 0, 10)
' fReadyLV = True
' ------- ここまで、コメントアウト -------
End If
End If
Case WM_WINDOWPOSCHANGED
If (fReadyLV) Then
Call SetLVColumnClick(hwndLV, 3)
Call SetLVColumnWidth(hwndLV)
fReadyLV = False
hDlg = 0
hwndLV = 0
Call UnHook
End If
' ------- ここから、追加 -------
Case WM_COMMAND
If (cwp.lParam = hwndTB) Then
Debug.Print "&H" & Hex(cwp.wParam And &HFFFF&)
End If
' ------- ここまで、追加 -------
End Select
End If
FileDlgHookProc = CallNextHookEx(m_hHook, nCode, wParam, cwp)
End Function