2017-03-17 10 views
-1

2つのファイル(a.au3b.au3)を作成しました。両方とも同じコードを含んでいます:2つの異なるウィンドウで同じコードの2つのファイルを開く

#include <IE.au3> 
#include <MsgBoxConstants.au3> 

Global $myUrl = "https://www.autoitscript.com" 
RegWrite('HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main','SessionMerging','REG_DWORD','00000000') 
ShellExecute ("iexplore.exe", " -nosessionmerging about:blank") 
WinWait ("Blank Page") 
Global $oIE = _IEAttach ("about:blank", "url") 
_IELoadWait ($oIE) 
_IENavigate ($oIE, $myUrl) 

同時に両​​方のファイルを起動すると、2つの空のInternet Explorerウィンドウが開きます。

私が望むのは、すべてのウィンドウがリンクにナビゲートすることです。しかし、最初のファイルと2番目のファイルがURLを同じウィンドウに移動するとどうなりますか?したがって、2番目のウィンドウはabout:blankにとどまります。私は両方のウィンドウで同じURLを開こうとするために起こると思います。

したがって、2つの異なるウィンドウから同じURLに移動する方法が必要です。私はすでにthe problem of session merging between windowsを使ってShellExecute()を解決しているので、_IECreate()を使用したくありません。代わりに、タイトルテキストのハンドルによって

答えて

0

ターゲットウィンドウ_IEAttach()(未テスト、エラーチェック)を使用していない:

#include <WinAPIProc.au3> 
#include <IE.au3> 

Global $g_aUrl[2] 
     $g_aUrl[0] = 'https://stackoverflow.com/' 
     $g_aUrl[1] = 'https://www.autoitscript.com/' 
Global $g_aIE[UBound($g_aUrl, 1)] 

For $i1 = 0 To UBound($g_aUrl, 1) -1  
    _IECreateSession($g_aIE[$i1], $g_aUrl[$i1])  
Next 

Func _IECreateSession(ByRef $oIE, Const $sUrl) 
    Local Const $iPID = ShellExecute('iexplore.exe', '-nosessionmerging about:blank') 
    Local  $aWnd 

    WinWait('Blank Page') 

    $aWnd = _WinAPI_EnumProcessWindows($iPID, True) 
    $oIE = _IEAttach($aWnd[1][1], 'hwnd') 

    _IELoadWait($oIE) 
    _IENavigate($oIE, $sUrl) 

    Return $iPID  
EndFunc 

は、指定されたプロセス(最新のIEのインスタンス)の主ウィンドウからハンドルを取得します。 Related

関連する問題