IEコンポーネント上の全選択方法
IEコンポーネント上の全選択方法
何時も、お世話に成っています。
実践コードモジュールで、Toshi様の「IE コンポーネントを表示してみる」
(http://www.activebasic.com/forum/viewtopic.php?t=435)
を使わして頂いてますが、全選択(CTRL+A)が出来ないのですが度の様に
すれば良いのでしょうか?
EM_SETSELを試しましたが駄目でした。
CreateWindowEx()の戻り値がハンドルじゃ無いのでしょうか?
宜しくお願いします。
実践コードモジュールで、Toshi様の「IE コンポーネントを表示してみる」
(http://www.activebasic.com/forum/viewtopic.php?t=435)
を使わして頂いてますが、全選択(CTRL+A)が出来ないのですが度の様に
すれば良いのでしょうか?
EM_SETSELを試しましたが駄目でした。
CreateWindowEx()の戻り値がハンドルじゃ無いのでしょうか?
宜しくお願いします。
あのコードですと、Ctrl+A に限らず多くのショートカット キーが効きません。
なのでいっそ IE コンポーネントにそのあたりの処理を任せるようにしてみます。
これで IE コンポーネントで有効なあらゆるショートカット キーが使えます。
まず必要な宣言を追加します。別なファイルとしてプロジェクトに追加するなどします。
AtlAxWinInit の宣言の削除、必要なインターフェイスの取得と解放を行っています。
また TestProject_DestroyObjects の部分は「(プロジェクト名)_DestroyObjects」に書き替えます。
これで Ctrl+A や Ctrl+F 等の、IE コンポーネントのショートカット キーが使えるようになります。
なのでいっそ IE コンポーネントにそのあたりの処理を任せるようにしてみます。
これで IE コンポーネントで有効なあらゆるショートカット キーが使えます。
まず必要な宣言を追加します。別なファイルとしてプロジェクトに追加するなどします。
[ここをクリックすると内容が表示されます]
次に MainWnd.sbp を大幅に書き替えます。コード: 全て選択
TypeDef HRESULT=Long
TypeDef BSTR=WordPtr
Interface IDispatch
Inherits IUnknown
Function GetTypeInfoCount(pctinfo As DWordPtr) As HRESULT
Function GetTypeInfo(iTInfo As DWord,lcid As DWord,ITypeInfo As VoidPtr) As HRESULT
Function GetIDsOfNames(riid As DWord,rgszNames As BytePtr,cNames As DWord,lcid As DWord,rgDispID As DWordPtr) As HRESULT
Function Invoke(dispIdMember As DWord,riid As DWord,lcid As DWord,wFlags As Word,pDispParams As DWordPtr,pVarResult As VoidPtr,pExcepInfo As DWordPtr,puArgErr As DWordPtr) As HRESULT
End Interface
Interface IWebBrowser
Inherits IDispatch
Function GoBack() As HRESULT
Function GoForward() As HRESULT
Function GoHome() As HRESULT
Function GoSearch() As HRESULT
Function Navigate(URL As BSTR,Flags As VoidPtr,TargetFrameName As VoidPtr,PostData As VoidPtr,Headers As VoidPtr) As HRESULT
Function Refresh() As HRESULT
Function Refresh2(Level As VoidPtr) As HRESULT
Function Stop() As HRESULT
Function get_Application(ppDisp As VoidPtr) As HRESULT
Function get_Parent(ppDisp As VoidPtr) As HRESULT
Function get_Container(ppDisp As VoidPtr) As HRESULT
Function get_Document(ppDisp As VoidPtr) As HRESULT
Function get_TopLevelContainer(pBool As VoidPtr) As HRESULT
Function get_Type(Type_ As *BSTR) As HRESULT
Function get_Left(pl As *Long) As HRESULT
Function put_Left(Left As Long) As HRESULT
Function get_Top(pl As *Long) As HRESULT
Function get_Top(Top As Long) As HRESULT
Function get_Width(pl As *Long) As HRESULT
Function get_Width(Width As Long) As HRESULT
Function get_Height(pl As *Long) As HRESULT
Function get_Height(Height As Long) As HRESULT
Function get_LocationName(LocationName As *BSTR) As HRESULT
Function get_LocationURL(LocationURL As *BSTR) As HRESULT
Function get_Busy() As HRESULT
End Interface
Interface IWebBrowserApp
Inherits IWebBrowser
Function Quit() As HRESULT
Function ClientToWindow() As HRESULT
Function PutProperty() As HRESULT
Function GetProperty() As HRESULT
Function get_Name() As HRESULT
Function get_HWND() As HRESULT
Function get_FullName() As HRESULT
Function get_Path() As HRESULT
Function get_Visible() As HRESULT
Function put_Visible(bBool As Long) As HRESULT
Function get_StatusBar() As HRESULT
Function put_StatusBar() As HRESULT
Function get_StatusText() As HRESULT
Function put_StatusText() As HRESULT
Function get_ToolBar() As HRESULT
Function put_ToolBar() As HRESULT
Function get_MenuBar() As HRESULT
Function put_MenuBar() As HRESULT
Function get_FullScreen() As HRESULT
Function put_FullScreen() As HRESULT
End Interface
Interface IWebBrowser2
Inherits IWebBrowserApp
Function Navigate2(URL As VoidPtr,Flags As VoidPtr,TargetFrameName As VoidPtr,PostData As VoidPtr,Headers As VoidPtr) As HRESULT
Function QueryStatusWB() As HRESULT
Function ExecWB() As HRESULT
Function ShowBrowserBar() As HRESULT
Function ReadyState() As HRESULT
Function get_Offline() As HRESULT
Function put_Offline() As HRESULT
Function get_Silent() As HRESULT
Function put_Silent() As HRESULT
Function get_RegisterAsBrowser() As HRESULT
Function put_RegisterAsBrowser() As HRESULT
Function get_RegisterAsDropTarget() As HRESULT
Function put_RegisterAsDropTarget() As HRESULT
Function get_TheaterMode() As HRESULT
Function put_TheaterMode() As HRESULT
Function get_AddressBar() As HRESULT
Function put_AddressBar() As HRESULT
Function get_Resizable() As HRESULT
Function put_Resizable() As HRESULT
End Interface
Interface IOleWindow
Inherits IUnknown
Function GetWindow(phwnd As *HWND) As HRESULT
Function ContextSensitiveHelp(fEnterMode As Long) As HRESULT
End Interface
Interface IOleInPlaceActiveObject
Inherits IOleWindow
Function TranslateAccelerator(lpmsg As *MSG) As HRESULT
Function OnFrameWindowActivate(fActivate As Long) As HRESULT
Function OnDocWindowActivate(fActivate As Long) As HRESULT
Function ResizeBorder(prcBorder As *RECT,pUIWindow As VoidPtr,fFrameWindow As Long) As HRESULT
Function EnableModeless(fEnable As Long) As HRESULT
End Interface
Declare Function AtlAxWinInit Lib "atl.dll" () As HRESULT
Declare Function AtlAxGetControl Lib "atl.dll" (hWnd As HWND,pp As VoidPtr) As HRESULT
AtlAxWinInit の宣言の削除、必要なインターフェイスの取得と解放を行っています。
また TestProject_DestroyObjects の部分は「(プロジェクト名)_DestroyObjects」に書き替えます。
[ここをクリックすると内容が表示されます]
更に IE コンポーネントに処理を渡す為に、メッセージ ループを書き替えます。
コード: 全て選択
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Dim hBrowserWnd As HWND
Dim pUnknown As *IUnknown
Dim pWebBrowser2 As *IWebBrowser2
Dim pOleInPlaceActiveObject As *IOleInPlaceActiveObject
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As DWord, lParam As DWord) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
TestWindowsApplication_DestroyObjects()
PostQuitMessage(0)
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
AtlAxWinInit()
hBrowserWnd=CreateWindowEx(NULL,"AtlAxWin","http://www.yahoo.co.jp/",
WS_CHILD Or WS_VISIBLE Or WS_VSCROLL Or WS_HSCROLL,
0,0,100,100,hMainWnd,0,GetModuleHandle(NULL),NULL)
AtlAxGetControl(hBrowserWnd,VarPtr(pUnknown))
Dim IID_IWebBrowser2=[&HD30C1661,&HCDAF,&H11D0,[&H8A,&H3E,&H00,&HC0,&H4F,&HC9,&HE2,&H6E]] As GUID
pUnknown->QueryInterface(VarPtr(IID_IWebBrowser2),VarPtr(pWebBrowser2))
Dim IID_IOleInPlaceActiveObject=[&H00000117,&H0000,&H0000,[&HC0,&H00,&H00,&H00,&H00,&H00,&H00,&H46]] As GUID
pWebBrowser2->QueryInterface(VarPtr(IID_IOleInPlaceActiveObject),VarPtr(pOleInPlaceActiveObject))
pWebBrowser2->Release()
pUnknown->Release()
End Sub
Sub MainWnd_Resize(SizeType As Long, cx As Integer, cy As Integer)
MoveWindow(hBrowserWnd,0,0,cx,cy,TRUE)
End Sub
Sub MainWnd_QueryClose(ByRef cancel As Integer)
pOleInPlaceActiveObject->Release()
End Sub
[ここをクリックすると内容が表示されます]
API の TranslateAccelerator と同じような感じです。コード: 全て選択
Dim Message As MSG
Do
If GetMessage(Message,NULL,NULL,NULL)<>1 Then Exit Do
If pOleInPlaceActiveObject->TranslateAccelerator(VarPtr(Message))=S_OK Then Continue
TranslateMessage(Message)
DispatchMessage(Message)
Loop
これで Ctrl+A や Ctrl+F 等の、IE コンポーネントのショートカット キーが使えるようになります。
IEコンポーネント上の全選択方法
Toshi様、ありがとう御座います。
実践コードモジュールの「IE コンポーネントを表示してみる」に追加。
Ver4.24で全選択(CTRL+A)が出来る様に成りました。(凄いですね^_^)
(私は、未だにVer3.13を使用しているのですが、Ver3.13では無理でしょうか?)
ブラウザウィンドウを2つ表示しているのですが、頂いたコードを追加し
Dim hBrowserWnd[1] As HWND
Dim pUnknown[1] As *IUnknown
Dim pWebBrowser2[1] As *IWebBrowser2
Dim pOleInPlaceActiveObject[1] As *IOleInPlaceActiveObject
等の様に変更しましたが有効なショートカット キー等、使用出来ません。
AtlAxGetControl()以降のコードは、Create時のみ有効のなのでしょうか?
前後に成りましたが、イグトランス (egtra)様、何時もありがとう御座います。
宜しくお願いします。
実践コードモジュールの「IE コンポーネントを表示してみる」に追加。
Ver4.24で全選択(CTRL+A)が出来る様に成りました。(凄いですね^_^)
(私は、未だにVer3.13を使用しているのですが、Ver3.13では無理でしょうか?)
【メモ】 [ここをクリックすると内容が表示されます]
ですが、今作成しているのはメイン画面ではなくダイアログ ボックスに Ver5.xxでは、エラー:「"VarPtr" 無効な識別子です」と成ります。
またVer4以降は、「実数に対して "And"等の演算子は利用できません」と
エラーに成りますが、仕様なのでしょうか?
またVer4以降は、「実数に対して "And"等の演算子は利用できません」と
エラーに成りますが、仕様なのでしょうか?
ブラウザウィンドウを2つ表示しているのですが、頂いたコードを追加し
Dim hBrowserWnd[1] As HWND
Dim pUnknown[1] As *IUnknown
Dim pWebBrowser2[1] As *IWebBrowser2
Dim pOleInPlaceActiveObject[1] As *IOleInPlaceActiveObject
等の様に変更しましたが有効なショートカット キー等、使用出来ません。
AtlAxGetControl()以降のコードは、Create時のみ有効のなのでしょうか?
前後に成りましたが、イグトランス (egtra)様、何時もありがとう御座います。
宜しくお願いします。
IEコンポーネント上の全選択方法
これは、問題では無いみたいですね。AtlAxGetControl()以降のコードは、Create時のみ有効のなのでしょうか?
モーダルダイアログボックスの場合、メッセージループは”Callback.wbp”のDialogBox()中に
在るのでここに追加したのですがコードを変更する度、書き換えなければならないので
他に方法は無いでしょうか?
それと、ブラウザウィンドウのハンドルをWindowFromPoint()で取得しているのですが、
他に取得する方法は無いでしょうか?
ボタンをクリックして一連の作業をする場合、ブラウザウィンドウをクリックしてからでないと
出来ないのと一度アクティブ(?)に成るとフォーカスがエディットボックスに成っていても関係なく
Ctrl+A でブラウザウィンドウに対して全選択に成ってしまいますし、カーソルキーを押した場合も
ブラウザウィンドウの画面がスクロールしてしまいます。(SetFocus()は効きません)
ブラウザウィンドウを2つ表示しているの場合、どちらに対して指定しているかの判別は、
度の様にすれば良いのでしょうか?
一度に沢山質問しましたが宜しくお願いします。
Ver. 3.13 は COM を扱えないので無理です。(私は、未だにVer3.13を使用しているのですが、Ver3.13では無理でしょうか?)
これは QueryInterface の引数の型が変わった為で、VarPtr() を外すだけでいいはずです。Ver5.xxでは、エラー:「"VarPtr" 無効な識別子です」と成ります。
コード: 全て選択
pUnknown->QueryInterface(IID_IOleInPlaceActiveObject,pOleInPlaceActiveObject)
フックを利用すると可能です。こちらのページの手法を参考にしてみてください。モーダルダイアログボックスの場合、メッセージループは”Callback.wbp”のDialogBox()中に
在るのでここに追加したのですがコードを変更する度、書き換えなければならないので
他に方法は無いでしょうか?
CreateWindowEx が返したハンドルから子ウィンドウを辿っていき、それと、ブラウザウィンドウのハンドルをWindowFromPoint()で取得しているのですが、
他に取得する方法は無いでしょうか?
クラス名が "Internet Explorer_Server" のウィンドウを見つけるという方法がありますが、面倒です。
フックによってメッセージを捕まえたら GetFocus でフォーカスのあるハンドルを取得し、ブラウザウィンドウを2つ表示しているの場合、どちらに対して指定しているかの判別は、
度の様にすれば良いのでしょうか?
あらかじめ取得しておいた、上記のウィンドウのハンドル 2 つとそれぞれ比較することで出来ます。
そして一致していた方の pOleInPlaceActiveObject->TranslateAccelerator を呼びます。
IEコンポーネント上の全選択方法
Toshi様、ありがとう御座います。
と云うのも、例えば下記の様にすればメモ帳の全選択(CTRL+A)が出来る様に、
ブラウザウィンドウに対しても出来ないのかなと思ったのです。
hWnd=FindWindow("Notepad", NULL)
PostMessage(hWnd, WM_COMMAND, 25, 0) ’25はメニュのID
フックの事は過去に何度も教えて頂いたのですが、気が付きませんでした。
ブラウザウィンドウが複数表示してる場合も、どれを指定したか判別が出来る様に成りました。
しかし、SetFocus()で設定した場合、カーソルキー等で画面はスクロールしますが
ショートカット キー等は、ブラウザウィンドウをクリックしてからでないと使用出来ません。
”Internet Explorer_Server”(クラス名)のハンドルは未だ取得できず、試行錯誤しています。
先ずCreateWindowEx()で ”AtlAxWin”(クラス名)のウィンドウを生成し表示すると
次に”Shell DocObject View”(クラス名)のウィンドウが表示し
続いて”Internet Explorer_Server”のウィンドウが表示しますが、
このウィンドウが表示した事が解る関数は無いのでしょうか?
どのタイミングで又、何処でハンドルを取得すれば良いのでしょうか?
宜しくお願いします。
COM を使わず出来ないものかと思って。Ver. 3.13 は COM を扱えないので無理です。
と云うのも、例えば下記の様にすればメモ帳の全選択(CTRL+A)が出来る様に、
ブラウザウィンドウに対しても出来ないのかなと思ったのです。
hWnd=FindWindow("Notepad", NULL)
PostMessage(hWnd, WM_COMMAND, 25, 0) ’25はメニュのID
Ver5.xxから仕様が変わったのでしたね。(すみません)QueryInterface の引数の型が変わった為で、VarPtr() を外すだけでいいはずです。
フックの事は過去に何度も教えて頂いたのですが、気が付きませんでした。
ブラウザウィンドウが複数表示してる場合も、どれを指定したか判別が出来る様に成りました。
しかし、SetFocus()で設定した場合、カーソルキー等で画面はスクロールしますが
ショートカット キー等は、ブラウザウィンドウをクリックしてからでないと使用出来ません。
”Internet Explorer_Server”(クラス名)のハンドルは未だ取得できず、試行錯誤しています。
先ずCreateWindowEx()で ”AtlAxWin”(クラス名)のウィンドウを生成し表示すると
次に”Shell DocObject View”(クラス名)のウィンドウが表示し
続いて”Internet Explorer_Server”のウィンドウが表示しますが、
このウィンドウが表示した事が解る関数は無いのでしょうか?
どのタイミングで又、何処でハンドルを取得すれば良いのでしょうか?
宜しくお願いします。
AtlAxGetControlして得たブラウザコントロールへのポインタからIOleWindowインタフェースを得られないでしょうか?
コード: 全て選択
Interface IOleWindow
Inherits IUnknown
Function GetWindow(ByRef hwnd As HWND) As HRESULT
Function ContextSensitiveHelp(fEnterMode As BOOL) As HRESULT
End Interface
Dim IID_IOleWindow = [&h00000114, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID
コード: 全て選択
Dim pOleWindow As *IOleWindow
p->QueryInterface(IID_IOleWindow, pOleWindow) 'pはAtlAxGetControlで得たポインタか、それからQueryInterfaceして得たポインタ
Dim hwnd As HWND
pOleWindow->GetWindow(hwnd)
pOleWindow->Release()
おそらく IE コンポーネントはメモ帳のようなことは出来ません。(確証は無いですが)
また TranslateAccelerator を呼ばない限りショートカット キーを処理しないらしく、
それを自前でやる(プログラム側でキーボード イベントを捕まえて、それに対応する処理を IE コンポーネントに依頼する)
のにも COM が必要になってしまいます...。
このウィンドウが確実に存在するのなら、次の関数に hBrowserWnd を渡すとハンドルを取得出来ます。そして確実に存在することを確かめるにはまた COM を使って色々しなければならないので、
少し無理矢理ですがタイマーなどである程度の時間を待って、戻り値が NULL ではなくなるまで上の関数を呼ぶといった方法があります。
追記:
かぶってしまいました。
また TranslateAccelerator を呼ばない限りショートカット キーを処理しないらしく、
それを自前でやる(プログラム側でキーボード イベントを捕まえて、それに対応する処理を IE コンポーネントに依頼する)
のにも COM が必要になってしまいます...。
SetFocus は Internet Explorer_Server クラスのウィンドウにする必要があります。しかし、SetFocus()で設定した場合、カーソルキー等で画面はスクロールしますが
ショートカット キー等は、ブラウザウィンドウをクリックしてからでないと使用出来ません。
このウィンドウが確実に存在するのなら、次の関数に hBrowserWnd を渡すとハンドルを取得出来ます。
コード: 全て選択
Function GetIEHWND(hParent As HWND) As HWND
Dim hWnd As HWND
Dim szClassName[255] As Byte
hWnd=GetWindow(hParent,GW_CHILD)
If hWnd Then
GetClassName(hWnd,szClassName,255)
If lstrcmp(szClassName,"Internet Explorer_Server")=0 Then
GetIEHWND=hWnd
Exit Function
Else
GetIEHWND=GetIEHWND(hWnd)
Exit Function
End If
End If
GetIEHWND=NULL
End Function
少し無理矢理ですがタイマーなどである程度の時間を待って、戻り値が NULL ではなくなるまで上の関数を呼ぶといった方法があります。
追記:
かぶってしまいました。
IEコンポーネント上の全選択方法
イグトランス (egtra)様、ありがとう御座います。
Internet Explorer_Server クラスのウィンドウハンドルは取得出来ませんでした。
pのポインタ変数はこれで良いのでしょうか?
Interface中の各Function の機能の解説があるサイトがあれば教えてください。
Refresh()で”更新”出来る等便利で他にも使いたいのですが機能名だけからでは
解らないものが多いので。
宜しくお願いします。
何処に入れれば良いのか解らないので取り合えず上記の様にしましたがSub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
AtlAxWinInit()
hBrowserWnd=CreateWindowEx(NULL,"AtlAxWin","http://www.yahoo.co.jp/",
WS_CHILD Or WS_VISIBLE Or WS_VSCROLL Or WS_HSCROLL,
0,0,100,100,hMainWnd,0,GetModuleHandle(NULL),NULL)
AtlAxGetControl(hBrowserWnd,VarPtr(pUnknown))
Dim IID_IWebBrowser2=[&HD30C1661,&HCDAF,&H11D0,[&H8A,&H3E,&H00,&HC0,&H4F,&HC9,&HE2,&H6E]] As GUID
pUnknown->QueryInterface(VarPtr(IID_IWebBrowser2),VarPtr(pWebBrowser2))
Dim IID_IOleInPlaceActiveObject=[&H00000117,&H0000,&H0000,[&HC0,&H00,&H00,&H00,&H00,&H00,&H00,&H46]] As GUID
pWebBrowser2->QueryInterface(VarPtr(IID_IOleInPlaceActiveObject),VarPtr(pOleInPlaceActiveObject))
pWebBrowser2->QueryInterface(VarPtr(IID_IOleWindow), VarPtr(pOleWindow)) 'pはAtlAxGetControlで得たポインタか、それからQueryInterfaceして得たポインタ
Dim hwnd As HWND
pOleWindow->GetWindow((VarPtr(hwnd))
pOleWindow->Release()
pWebBrowser2->Release()
pUnknown->Release()
End Sub
Internet Explorer_Server クラスのウィンドウハンドルは取得出来ませんでした。
pのポインタ変数はこれで良いのでしょうか?
Interface中の各Function の機能の解説があるサイトがあれば教えてください。
Refresh()で”更新”出来る等便利で他にも使いたいのですが機能名だけからでは
解らないものが多いので。
宜しくお願いします。
IEコンポーネント上の全選択方法
Toshi様、ありがとう御座います。
色々調べて頂いてありがとう。
GetIEHWNDで得たハンドルですよね。
今迄、WindowFromPoint で取得していましたがGetIEHWNDを使わして頂きます。(^_^)
何処に入れれば良いのか使い方が解ずお聞きしているところです。
ウィンドウが表示した事が解る関数は無いみたいで、COM で出来ない場合はタイマーを使って取得するしか無いみたいですね。
宜しくお願いします。
IE コンポーネント等はCOM が不可欠なんですね。おそらく IE コンポーネントはメモ帳のようなことは出来ません。(確証は無いですが)
また TranslateAccelerator を呼ばない限りショートカット キーを処理しないらしく、
それを自前でやる(プログラム側でキーボード イベントを捕まえて、それに対応する処理を IE コンポーネントに依頼する)
のにも COM が必要になってしまいます...。
色々調べて頂いてありがとう。
SetFocus で指定したウィンドウハンドルは、Internet Explorer_Server クラスのウィンドウです。SetFocus は Internet Explorer_Server クラスのウィンドウにする必要があります。
GetIEHWNDで得たハンドルですよね。
今迄、WindowFromPoint で取得していましたがGetIEHWNDを使わして頂きます。(^_^)
「COM を使用すれば存在することを確かめられる」のが、イグトランス (egtra)様のコードでしょうか?そして確実に存在することを確かめるにはまた COM を使って色々しなければならないので、
少し無理矢理ですがタイマーなどである程度の時間を待って、戻り値が NULL ではなくなるまで上の関数を呼ぶといった方法があります。
何処に入れれば良いのか使い方が解ずお聞きしているところです。
ウィンドウが表示した事が解る関数は無いみたいで、COM で出来ない場合はタイマーを使って取得するしか無いみたいですね。
宜しくお願いします。
はい,そういうコードを想定していました。お役に立てず済みません。
ちなみに,そのコードはここを参考にしました。
Obtaining the HWND for the WebBrowser control - Microsoft Support Online
ちなみに,そのコードはここを参考にしました。
Obtaining the HWND for the WebBrowser control - Microsoft Support Online
IEコンポーネント上の全選択方法
イグトランス (egtra)様、ありがとう御座います。
現在は、Toshi様が提案して頂いたタイマーを使ってGetIEHWNDでハンドルを取得していますが、
Internet Explorer_Server クラスのウィンドウが表示した事が解る関数が有れば教えてください。
フォーカス なのですが、ブラウザウィンドウをクリックしてからでないとショートカット キー等は
使用出来無い為、SetCursorPosでマウスカーソルをブラウザウィンドウに移動しmouse_eventで
クリックしてますが、他に方法は無いでしょうか?
SetFocusだけでは駄目なので、AttachThreadInputを試したのですが上手くいきません。
それと、ブラウザウィンドウ中のTABによるフォーカス移動が出来ないのですが、度の様にすれば
良いのでしょうか?
いいえ、何時も役に立つ回答を頂いています!(^_^)はい,そういうコードを想定していました。お役に立てず済みません。
現在は、Toshi様が提案して頂いたタイマーを使ってGetIEHWNDでハンドルを取得していますが、
Internet Explorer_Server クラスのウィンドウが表示した事が解る関数が有れば教えてください。
フォーカス なのですが、ブラウザウィンドウをクリックしてからでないとショートカット キー等は
使用出来無い為、SetCursorPosでマウスカーソルをブラウザウィンドウに移動しmouse_eventで
クリックしてますが、他に方法は無いでしょうか?
SetFocusだけでは駄目なので、AttachThreadInputを試したのですが上手くいきません。
それと、ブラウザウィンドウ中のTABによるフォーカス移動が出来ないのですが、度の様にすれば
良いのでしょうか?
【おまけ】 [ここをクリックすると内容が表示されます]
宜しくお願いします。 Interface中の各Function の機能の解説があるサイトがあれば教えてください。
Refresh()で”更新”出来る等便利で他にも使いたいのですが機能名だけからでは
解らないものが多いので。
Refresh()で”更新”出来る等便利で他にも使いたいのですが機能名だけからでは
解らないものが多いので。