1

Тема: AHK: Включение/выключение javascript в ie

Написал такой код, однако он не работает в запущенном IE.
Что пропустил?

f11::
regwrite,REG_DWORD,HKCU,Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3,1400, 0
dllcall("wininet\InternetSetOptionW","int","0","int","39","int","0","int","0")
return

f12::
regwrite,REG_DWORD,HKCU,Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3,1400, 3
dllcall("wininet\InternetSetOptionW","int","0","int","39","int","0","int","0")
return

2

Re: AHK: Включение/выключение javascript в ie

А цифры в кавычках зачем?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: Malcev, 2015-06-13 02:53:01)

Re: AHK: Включение/выключение javascript в ie

Скопипастил откуда-то. Кавычки не нужны?
Убрал кавычки - результат тот же.

4

Re: AHK: Включение/выключение javascript в ie

Скопипастил откуда-то.

А ты уверен, что нужный ключ в реестре меняешь? Это зависит от версии IE.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Включение/выключение javascript в ie

Да. Уверен. Я этот ключ сам искал в
https://support.microsoft.com/en-us/kb/182569
И он действительно изменяет значение в Internet Security settings -> enable/disable scripting.
Но запущенная версия IE не подхватывает эти изменения.
Для этого вызываем wininet.dll
https://msdn.microsoft.com/en-us/librar … 85%29.aspx

INTERNET_OPTION_SETTINGS_CHANGED
    39
    Notifies the system that the registry settings have been changed so that it verifies the settings on the next call to InternetConnect. This is used by InternetSetOption.

Но почему-то эта фишка не срабатывает с запущенными приложениями Ie.
Для изменения прокси на лету после 39, нужно еще вызывать 37

INTERNET_OPTION_REFRESH
    37
    Causes the proxy data to be reread from the registry for a handle. No buffer is required. This option can be used on the HINTERNET handle returned by InternetOpen. It is used by InternetSetOption.

Но эта опция касается только прокси как я понял.
Вот и вопрос - какую опцию вызвать, чтобы оповестить запущенный IE об отключении джаваскрипта.

6

Re: AHK: Включение/выключение javascript в ie

Ну, некоторые настройки изменяются вообще только после перезагрузки системы, так что не факт, что это возможно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7 (изменено: Malcev, 2015-06-13 22:18:03)

Re: AHK: Включение/выключение javascript в ie

Хорошо, но если изменить эту настройку в самом броузере, то рестарт приложения не нужен.
Но ладно.
Вот написал скрипт и хоть убей не могу логичесуи объяснить почему при второй и шестой итерации этот джаваскрит становится вновь запущенным???
Если откоментить 2 строчки с закрытием IE окна либо откоментить

   ;If (A_Index = 2) or (A_Index = 6)
   ;   Continue

то все становится в порядке.
Но мне надо чтобы все окна запускались с отключенным джаваскриптом.

CloseProcess("iexplore.exe")
ComObjError(false)
regwrite,REG_DWORD,HKCU,Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3,1400, 0
dllcall("wininet\InternetSetOptionW","int","0","int","39","int","0","int","0")
oIE := ComObjCreate("InternetExplorer.Application")
oIE.visible := True, oIEHWND := oIE.HWND
WinMaximize ahk_id %oIEHWND%
oIE.navigate("https://www.whatismybrowser.com/is-javascript-enabled")
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy
   Sleep, 10
If Instr(oIE.document.documentElement.OuterHtml, "<span>No</span>")
   msgbox % Error

regwrite,REG_DWORD,HKCU,Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3,1400, 3
dllcall("wininet\InternetSetOptionW","int","0","int","39","int","0","int","0")
loop 10
{
   oIE := ComObjCreate("InternetExplorer.Application")
   ;If (A_Index = 2) or (A_Index = 6)
   ;   Continue
   oIE.visible := True, oIEHWND := oIE.HWND
   WinMaximize ahk_id %oIEHWND%
   oIE.navigate("https://www.whatismybrowser.com/is-javascript-enabled")
   While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy
      Sleep, 10
   If Instr(oIE.document.documentElement.OuterHtml, "<span>Yes</span>")
      msgbox % "Ошибка на " A_Index " итерации "
   ;WinClose ahk_id %oIEHWND%
   ;WinWaitClose ahk_id %oIEHWND%
}

CloseProcess(MyProc)
{
   ErrorLevel := 1
   While ErrorLevel and A_Index < 10
   {
      Process, Close, %MyProc%
      Process, WaitClose, %MyProc%, 1
   }
   return
}

8 (изменено: Malcev, 2015-06-14 05:13:02)

Re: AHK: Включение/выключение javascript в ie

Пока только придумал, проверять включенную джаву через яндекс:

CloseProcess("iexplore.exe")
loop 20
{
   if A_Index = 1
      enableJava()
   if A_Index = 2
   {
      disableJava()
      disableJava := 1
   }
   loop
   {
      com++
      oIE := ComObjCreate("InternetExplorer.Application")
      oIE.navigate("http://yandex.ru/internet")
      While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy
         Sleep, 10
      if disableJava != 1
         break
      ResponseText := oIE.document.documentElement.OuterHtml
      If Instr(ResponseText, "<strong>JavaScript</strong>: да")
      {
         oIE.visible := True, oIEHWND := oIE.HWND
         WinMaximize ahk_id %oIEHWND%
         msgbox, экземпляр IE %com% почему-то использует джаву
         Continue
      }
      msgbox, с экземпляром IE %com% все в порядке
      break
   }
}

CloseProcess(MyProc)
{
   ErrorLevel := 1
   While ErrorLevel and A_Index < 10
   {
      Process, Close, %MyProc%
      Process, WaitClose, %MyProc%, 1
   }
   return
}

enableJava()
{
   regwrite,REG_DWORD,HKCU,Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3,1400, 0
   dllcall("wininet\InternetSetOptionW","int","0","int","39","int","0","int","0")
   return
}

disableJava()
{
   regwrite,REG_DWORD,HKCU,Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3,1400, 3
   dllcall("wininet\InternetSetOptionW","int","0","int","39","int","0","int","0")
   return
}