IEのイベント(?)をこっちのソフトで取得すればいいんですよね・・・
試しにGetWindowProcでウィンドウプロシージャのアドレスを取得してサブクラス化しようとしましたが、必ずエラーが返ってきます。
コード:
#N88BASIC
Dim IEWnd As HWND,IEDefProc As DWord
Function GetError() As String'エラーを取得する関数(勝手に作りました)
Dim lpMsgBuf As BytePtr
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),LANG_USER_DEFAULT,VarPtr(lpMsgBuf),0,NULL)
GetError=MakeStr(lpMsgBuf)
LocalFree(lpMsgBuf)
EndFunction
IEWnd=FindWindow("IEFrame",NULL)'IEのウィンドウハンドルを取得
IEDefProc=GetWindowLong(IEWnd,GWL_WNDPROC)'アドレスを取得のはず…
SetWindowLong(IEWnd,GWL_WNDPROC,AddressOf(SubClass))'サブクラス化
print IEWnd,IEDefProc,GetError()
'↓サブクラス 右クリでメッセージボックス
Function SubClass(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
If dwMsg = WM_RBUTTONUP Then
MessageBox(_PromptSys_hWnd, "右クリック", "test", MB_OK)
End If
SubClass=CallWindowProc(IEDefProc, hWnd,dwMsg,wParam,lParam)
EndFunction
調べてみたところ、こんな問題が
URL
SetWindowsHookEx()を使うと上手く行くんだか行かないんだか。
僕にはよく分かりません。
詳しい人よろしくお願いします。