掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ObjectFromLresultの使い方をお教えください (ID:102355)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
熊谷隆史様いつもありがとうございます。 ># 他所で以前、同様の質問をしたはずなのに。 以前ご提示頂いたサンプルは以下のような感じだったと思いますが、 Public Const WM_GETOBJECT = &H3D& Public Const OBJID_NATIVEOM = &HFFFFFFF0 Public Declare Function ObjectFromLresult Lib "oleacc" _ (ByVal lResult As Long, riid As Any, _ ByVal wParam As Long, ppvObject As Any) As Long Public Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" _ (ByVal hWnd As Long, ByVal Msg As Long, _ ByVal wParam As Long, lParam As Any) As Long Public Declare Function IIDFromString Lib "ole32" _ (lpsz As Any, lpiid As Any) As Long Public Declare Function FindWindowEx Lib "user32" _ Alias "FindWindowExA" _ (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, _ ByVal lpszClass As String, ByVal lpszWindow As String) As Long Public Const IID_IDispatch = "{00020400-0000-0000-C000-000000000046}" Option Explicit Sub test3() Dim wkw As Excel.Window Dim hwndApp As Long Dim hwndClient As Long Dim hwndBook As Long Dim lngResult As Long Dim lngRtnCode As Long Dim strMsg As String Dim bytID() As Byte Dim IID(0 To 3) As Byte hwndApp = FindWindowEx(0, hwndApp, "XLMAIN", vbNullString) hwndClient = FindWindowEx(hwndApp, 0, "XLDESK", vbNullString) hwndBook = FindWindowEx(hwndClient, 0, "EXCEL7", vbNullString) lngResult = SendMessage(hwndBook, WM_GETOBJECT, 0, ByVal OBJID_NATIVEOM) If lngResult Then bytID = IID_IDispatch & vbNullChar IIDFromString bytID(0), IID(0) lngRtnCode = ObjectFromLresult(lngResult, IID(0), 0, wkw) Else strMsg = "SendMessage Error " End If If Not wkw Is Nothing Then strMsg = "確認できたよ " & wkw.Caption & vbTab 'OK Else strMsg = strMsg & "駄目でした" End If MsgBox strMsg End Sub iidfromstringというAPIがmsdnを読んでもどうしても理解できなかったので、自分なりにサンプルを書き換え実験をして今回の質問にいたりました。 熊谷隆史様がおっしゃるとおりIID_IaccessibleをIID_IDispatchにかえると私が始めに提示したtestもうまく動作しましたが、http://msdn.microsoft.com/en-us/library/dd373605(VS.85).aspx にはIID_Iaccessibleを引き渡してくださいと書いてあるように見えますがこれも私の誤訳でしょうか?
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.