タイトル : タスクバーのGETITEMCOUNTが取れません。 投稿日 : 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 どこか見落としや間違っていそうな箇所・ヒントなどございましたら お教えいただけないでしょうか。 どうぞよろしくお願いいたします。 |