Что нового

Запретить открытие ссылок в новом окне для объекта "Shell.Explorer.2"

asdf8

Скриптер
Сообщения
564
Репутация
152
Сейчас с этим поступаю так:

Код:
#Include <WinAPIEx.au3>
#Include <GUIConstantsEx.au3>

$oIE = ObjCreate("Shell.Explorer.2")
$oShellEvent = ObjEvent($oIE, "_Shell_", "DWebBrowserEvents")

$Form = GUICreate("Form", 625, 450, -1, -1)
GUICtrlCreateObj($oIE, 0, 0, 625, 450)
GUISetState(@SW_SHOW)

$oIE.Navigate("http://yandex.ru/yandsearch?text=autoit")
$iMonitorIE = 0
AdlibRegister('_MonitorIE')

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func _Shell_NewWindow($sURL)
	$iMonitorIE = 1
	$oIE.Stop()
	$oIE.Navigate($sURL)
EndFunc

Func _MonitorIE()
	If Not $iMonitorIE Then Return
	Local $aProc = ProcessList('IEXPLORE.EXE')
	If IsArray($aProc) And $aProc[0][0] > 0 Then
		For $i = 1 To $aProc[0][0]
			If StringInStr(_WinAPI_GetProcessCommandLine($aProc[$i][1]), '-Embedding') Then
				If $i < $aProc[0][0] Then
					ProcessClose($aProc[$i + 1][1])
				EndIf
				ProcessClose($aProc[$i][1])
				$iMonitorIE = 0
				$i += 1
			EndIf
		Next
	EndIf
EndFunc

но, все равно, мелькает окно IE.
Может есть другие методы ?
 

BIOS

Жизнь - игра. График - супер, но сюжет - хреновый.
Сообщения
173
Репутация
69
Код:
$oIE.document.parentWindow.execScript("window.open=function(url,name,params){location.href=url}")
$links=$oIE.document.links
For $link In $links
	if $link.target='_blank' Then $link.target='_self'
Next


Выполнять после каждой смены страницы
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
Да, похоже нужно, что-то типа этого, но такой способ работает не всегда :(

Код:
#Include <GUIConstantsEx.au3>

$oIE = ObjCreate("Shell.Explorer.2")
$oShellEvent = ObjEvent($oIE, "_Shell_", "DWebBrowserEvents")

$Form = GUICreate("Form", 625, 450, -1, -1)
GUICtrlCreateObj($oIE, 0, 0, 625, 450)
GUISetState(@SW_SHOW)

; $oIE.Navigate("http://yandex.ru/yandsearch?text=autoit")
$oIE.Navigate("http://www.101.ru/?an=port_allchannels")

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func _Shell_NavigateComplete($sURL)
	ConsoleWrite('->' & $sURL & @CRLF)
	If IsObj($oIE.document) Then
		$oIE.document.parentWindow.execScript("window.open=function(url,name,params){location.href=url}")
		$links = $oIE.document.links
		For $link In $links
			If $link.target = '_blank' Then
				$link.target = '_self'
				ConsoleWrite('--- ->' & $link.href & @CRLF)
			EndIf
		Next
	EndIf
EndFunc

Хотя, все работает, если убрать проверку
Код:
If $link.target = '_blank'
 
Верх