タイトル | : タスクバーのGETITEMCOUNTが取れません。 |
記事No | : 10478 |
投稿日 | : 2011/03/30(Wed) 15:18 |
投稿者 | : camputer |
今日は、いつも勉強させていただいております。 質問させていただきます。どうぞよろしくお願いいたします。
環境:VB2008EE + XP VB歴3年程度&プログラム歴10年程度 でございます。
現在開いているテキストファイル名の一覧を作成いたしたく 「タスクバー上のボタン名一覧を取得すればよいのかな」などと考えまして 検索いたしておりましたところ、↓の頁で同じ質問をなさっておられました。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24958&forum=7
そこで同じようにコーティングさせていただきましたところ、タスクバーの hwndは取れるのでございますが、SendMessageしたつもりのTCM_GETITEMCOUNTが 0しか返ってまいりません。コードは下記のようになります。
Public Const TCM_FIRST As Integer = &H1300 Public Const TCM_GETITEMCOUNT As Integer = TCM_FIRST + 4
Dim iTabCount As Integer = 0 'ボタンの数
'ボタンの数取得 Dim hwnd As Integer = FindWindow("Shell_TrayWnd", "") MsgBox(hwnd) iTabCount = SendMessage(hwnd, TCM_GETITEMCOUNT, 0, 0) MsgBox(iTabCount)
SendMessageにつきましては、頁下部にある2つの宣言方法(下記1と2)では エラー「縮小変換しないで呼び出される、アクセス可能な'SendMessage'がないため、 オーバーロードの解決に失敗しました。」が出ますが、 頁中程にあるlParamがObjec型の物(下記3)であればエラーが消えます。 SendMessageがおかしいのかな?などと考えまして、もう1つSendMessageを 見つけてまいりましたが(下記4)、やはりボタンの数は0でございます。
'1 <DllImport("user32.dll")> _ Public Shared Function SendMessage( _ ByVal hWnd As IntPtr, _ ByVal msg As Integer, _ ByVal wParam As Integer, _ ByVal lParam As IntPtr) As Boolean
End Function '2 <DllImport("user32.dll")> _ Public Shared Function SendMessage( _ ByVal hWnd As IntPtr, _ ByVal msg As Integer, _ ByVal wParam As Integer, _ ByVal lParam As Integer) As Integer
End Function '3 <DllImport("user32.dll")> _ Public Shared Function SendMessage( _ ByVal hWnd As Integer, _ ByVal MSG As Integer, _ ByVal wParam As Integer, _ ByVal lParam As Object) As Integer
End Function '4 Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _ ByVal hWnd As Integer, _ ByVal MSG As Integer, _ ByVal wParam As Integer, _ ByVal lParam As Object) As Integer
どこか見落としや間違っていそうな箇所・ヒントなどございましたら お教えいただけないでしょうか。 どうぞよろしくお願いいたします。
|