プロが教える店舗&オフィスのセキュリティ対策術

VBA(Excel2003の)でステータスバーに表示されている情報(文字)を
APIで取得したいのですが、SendMessageでSB_GETTEXTを使って取得する
ことまではわかりましたが・・・
どうにわからず、最終的に↓のアドレスのソースを使ってみましたが、
空白しか取得できませんでした。
(パートの数はあっていそうなのですが、文字列がとれていません。)
http://homepage2.nifty.com/nonnon/SoftSample/Sam …

取得したい対象は、IEとかワードパッドとか秀丸とか、一般的な
アプリケーション全般のステータスバーの情報ですのでAPIを使いたいと
思っています。

ご教授いただければ幸いです。

A 回答 (2件)

Excel.Application.StatusBarが Falseを返す場合は


SB_GETTEXTや WM_GETTEXTなどでは取得不能だと思われます …
    • good
    • 0
この回答へのお礼

redfox63様

ご回答ありがとうございます。
>Excel.Application.StatusBar
というのは、もしかすると、Excelのステータスバーの場合となるのではないか思います。
(私の理解不足で、勘違いしているようなら申し訳ありません)

ExcelのVBAを使用し、APIで別のアプリケーションのステータスバーの
内容を取得したいのが私の希望ですが、ご回答いただきありがとうございました。

お礼日時:2008/08/16 18:47

以前どこかで似たような質問があった時の回答を保存していたものです。


私も完全には理解できていませんが、この様なことではないかと思い、
提示致します。

'使用するAPI
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
'可視判定
Public Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
'キャプション取得
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
'オーナーフォームを指定してハンドル取得
Public Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
'定数:オーナーフォームチェック用
Public Const GW_OWNER = 4

'コールバック
Public Function GetProc(ByVal hWnd As Long, lParam As Long) As Boolean
Dim MyName As String * 128
Dim ret As Long

MyName = ""
ret = GetWindowText(hWnd, MyName, Len(MyName))

If IsWindowVisible(hWnd) Then
If GetWindow(hWnd, GW_OWNER) = 0 Then
If ret <> 0 Then
Debug.Print MyName & vbCrLf
End If
End If
End If
GetProc = True
End Function


Sub TEST()
Call EnumWindows(AddressOf GetProc, 0)
End Sub
ご参考になれば幸いです。
    • good
    • 0
この回答へのお礼

n-jun様

ご回答ありがとうございます。
恐らく、ご回答いただきました内容については、
タイトルの取得になるのではないかと思われますが、
参考になりました。
ありがとうございます^^

お礼日時:2008/08/16 18:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!