powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Объект InternetExplorer.Application в vbs и js
37 сообщений из 37, показаны все 2 страниц
Объект InternetExplorer.Application в vbs и js
    #38133676
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два скрипта один на vbs другой на js. Делают одно и тоже - открывают вэб-приложение без разных дополнительных элементов браузера(строки ввода, меню, статусбара и тд).
Вот они:
JS
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
ie = new ActiveXObject("InternetExplorer.Application");

var itm = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2").ExecQuery("Select * from Win32_DesktopMonitor");

for (var enm = new Enumerator(itm); !enm.atEnd(); enm.moveNext()) {
  var res = enm.item();
};

// Задаём опции окна IE
ie.left       = res.ScreenWidth/2 - 300;
ie.top        = res.ScreenHeight/2 - 275;
ie.height     = 550;
ie.width      = 600;
ie.menubar    = false;
ie.toolbar    = false;
ie.statusbar  = false;

// Задаем пустую страницу
ie.navigate(url);

// Показывем IE
ie.visible=true;


VBS
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Set objIE =  WScript.CreateObject("InternetExplorer.Application", "IE_")

'var itm = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2").ExecQuery("Select * from Win32_DesktopMonitor");

'for (var enm = new Enumerator(itm); !enm.atEnd(); enm.moveNext()) {
'  var res = enm.item();
'};

' Задаём опции окна IE
'objIE.left       = res.ScreenWidth/2 - 300;
'objIE.top        = res.ScreenHeight/2 - 275;
objIE.Left       = 200
objIE.Top        = 200
objIE.Height     = 550
objIE.Width      = 600

objIE.AddressBar = False
objIE.MenuBar = False
objIE.ToolBar = False
objIE.StatusBar  = False
objIE.RegisterAsBrowser = True

objIE.Navigate url

While objIE.Busy
    Wscript.Sleep 200
Wend

objIE.Visible = 1

While 0=0
    WScript.Sleep 1000
Wend

Sub IE_OnQuit()
    ny = MsgBox("OnQuit event!", 32+4)
	'6 - Да 7 - Нет
	if ny = 6 Then WScript.Quit
End Sub



Мне необходимо как то их объеденить в один, то есть в варианте js я определяю разрешение экрана и вывожу окно по центру его, в vbs не догнал как переделать.

Еще проблемы в обоих вариантах:
- почему то окно открывается свернутое и начинает мигать в таскбаре - как его вывести на передний план?
- нужно обработать событие закрытие окна скрипта, что бы выдавать предупреждение от которого можно отказаться - в варианте vbs я попытался это сделать, но при любом исходе конфирм окна оно закрывается.

Хотелось бы на выходе видеть скрипт, который соответствует требованиям выше.

Есть ли мысли по этому поводу?

Спасибо
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38133707
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в vbs не догнал как переделать
Код: vbnet
1.
2.
3.
4.
Dim res
For Each res In itm
    Exit For
Next

Остальное как в js

- почему то окно открывается свернутое и начинает мигать в таскбареПотому что в таком виде оно было закрыто в последний раз.
как его вывести на передний план?поковыряйся в ExecWB, может какая-то команда поможет
- нужно обработать событие закрытие окна скрипта Что это? У скрипта нет окон.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38133898
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЧто это? У скрипта нет окон.

Может быть не правильно выразился, но нужно обработать событие закрытие данного окна и закрыть его или нет по запросу.

Antonariyпоковыряйся в ExecWB

а как оно связано: яже создаю объект IE и показываю его, а ExecWB здесь как может поучавствовать?

Так же сбивается масштаб браузера, необходимо открыть приложение с масштабом 100%.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38133921
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasik закрытие данного окнаКакого данного? IE?
kasik а как оно связано:Это метод IE, который выполнят разные действия в зависимости от параметров. Например, отправляет страницу на печать.

kasik Так же сбивается масштаб браузера, необходимо открыть приложение с масштабом 100%.Что такое масштаб? Если это зум, то ExecWB + OLECMDID_ZOOM.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38133937
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как обратиться к res:
Код: vbnet
1.
objIE.Left       = res.ScreenWidth/2 - 300;



ругается...


Судя по этому как мне может перевести окно на первый план?
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38133944
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariykasik закрытие данного окнаКакого данного? IE?Ну да, не догнал.

Закрытие крестиком отменить нельзя, можно только отменить закрытие, сделанное с помощью window.close
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38133953
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasikкак обратиться к res:
Код: vbnet
1.
objIE.Left       = res.ScreenWidth/2 - 300;



ругается...Ругается на точку с запятой, которую ты скопипастил из js.
kasik Судя по этому Какая тухлая документация. Зайди наконец на сайт производителя.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38133958
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
Set itm = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2").ExecQuery("Select * from Win32_DesktopMonitor")



на это тоже ругается (
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38133964
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasik
Код: vbnet
1.
Set itm = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2").ExecQuery("Select * from Win32_DesktopMonitor")



на это тоже ругается (А тут ты скопипастил экранирование слешей.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38133983
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можно ли использовать js в vbs и наоборот?
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38133992
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
слеши убрал, заработало, но почему то окно открывается с задержкой в 15 секунд, в js такого не было.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134000
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasikа можно ли использовать js в vbs и наоборот?В смысле?
kasikслеши убрал, заработало, но почему то окно открывается с задержкой в 15 секунд, в js такого не было.Может из-за цикла со sleep?
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134014
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну можно в принципе сделать CreateObject("MSScriptControl.ScriptControl") и напихать в него код на нужном языке, но зачем?
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134021
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я так информационно...

Пытаюсь выполнить:
Код: vbnet
1.
2.
3.
Dim Z As Variant     'Z is the value to hold the zoom level.
Z = 0
objIE.ExecWB OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, Null, Z



Скопипастил с сайта мелкомягких, но дает ошибку:
"Предполагается наличие окончания инструкции"
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134031
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbs не знает что такое null, что такое As, и в отличие от vba требует скобки при вызове функций.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134054
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наоборот ругается на скобки при их использовании.

И как мне изменить это что бы заработало?

Нашел еще
OLECMDID_WINDOWSTATE_FLAG

возможно как то поможет для восстановление окна
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134061
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет скобок я приврал, и так и так работает.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134073
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще все константы OLECMD... нужно заменить их значениями.

Запускаешь ворд/эксель, alt+f11, tools - references, галку на Microsoft Internet Controls, F2. Там все перечислено.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134077
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде начало отрабатывать:
Код: vbnet
1.
objIE.ExecWB OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, 100, 0



ошибка - "Попытка отменить конечное место переноса, которе не было зарегистрировано"
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134088
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так не ругается, но и изменений нет

Код: vbnet
1.
objIE.ExecWB 19, 2, 0, 0
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134175
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил вопрос по поводу зума проще, через реестр:
Код: vbnet
1.
2.
3.
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Zoom\ZoomFactor", "100000", "REG_SZ"



По поводу управлением окна, сейчас покапаю относительно хэндлера окна, который можно получить через свойцство HWND объекта браузера.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134291
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел следующую фишку:
Код: vbnet
1.
2.
Set win = CreateObject("window.manager")
win.ActivateWindow objIE.HWND



но ругается - "Невозможно создание объекта контейнером ActiveX"

Может название объекто другое или подключение к нему происходит по другому, но в мануале вот данная строчка есть и не работает. Уже запарился немного(
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134439
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это какой-то левый объект, которого нет в комплекте винды. Без левых объектов с hwnd в скриптах делать нечего.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134531
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть то в том что необходимо подключиться к объекту управления окнами и потом уже восстановить данное окно. Но где мне взять называние правильное этого объекта? Где можно посмотреть вообще эти объекты? Много чего уже перелопатил но данный перечень не нашел. Только обрывочные сведения...
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134548
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasikГде можно посмотреть вообще эти объекты?Нигде. Их нет.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38134619
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasik,

Например, можешь проверить наличие ActiveX компоненты в системе, например ActiveXHelper . Там есть поиск - может имя указано неправильно. Бывают опечатки в примерах.
Если компоненты нет - ее нужно воткнуть.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38135800
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос до сих пор актуален...

Программу посмотрел, такого объекта нет.

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

Просто должно быть, но никак не могу найти решенеи этого вопроса(
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38135879
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasikПросто должно бытьНе должно и нет. Забудь.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38136045
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нет прямого решение, то должно быть обходное. Например, нажать программно на ALT+TAB.
Но тоже не выходит:
Код: vbnet
1.
2.
3.
Set shell = CreateObject("WScript.Shell")

shell.SendKeys "%{TAB}"



Реакции никакой.

Все таки почему он запускается свернутый? может в реестреесть какой то флаг, который при запуске можно поменять...
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38136144
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasik Реакции никакой.SendKeys отправляет нажатие в активное окно, CreateObject("WScript.Shell") никаких окон не открывает.

Попробуй что-нибудь из этого.
Код: vbnet
1.
2.
3.
4.
5.
Set shell = CreateObject("Shell.Application")
shell.CascadeWindows
shell.TileHorizontally 
shell.TileVertically
shell.WindowSwitcher

Все эти методы параметров не имеют.

Еще можно попробовать так:
Код: vbnet
1.
objIE.document.parentWindow.execScript "MsgBox(""тынц"",vbSystemModal)", "vbscript"

Нажатие на MsgBox по идее должно вывести IE на передний план. А может и нет.
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38136204
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не помогло.

Вот нашел:
Код: vbnet
1.
2.
3.
'Option Explicit
Declare apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hDC as integer, aRect as Rect)
apiShowWindow IE.hwnd, SW_MAXIMIZE



Но опять засада, нельзя в vbs подключить стороннюю ф-ю из dll.

так же пробовал через процессы:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
strProcessToKill = "iexplore.exe"
Set objWMIService = GetObject("winmgmts:" _ 
   & "{impersonationLevel=impersonate}!\\" _ 
   & strComputer _ 
   & "\root\cimv2") 
Set colProcess = objWMIService.ExecQuery _
   ("Select * from Win32_Process Where Name = '" & strProcessToKill & "'")



но не нашел что потом можно с этим сделать.

Казалось бы такая просая задача, а выходит проблема такая.

Как это вообще можно рассматривать? Это баг или нет?
Если нет, то почему не решается тривиальными методами...
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38136268
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasik....
Но опять засада, нельзя в vbs подключить стороннюю ф-ю из dll.
...То есть?
Кто мешает писать свою компоненту? Будет выдавать запрос на установку. Поверит юзверь или нет - второй вопрос. Я бы не поверил... :)
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38136286
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно без разных дополнительных ко мпонентов только системными средствами
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38136306
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вспомнил, вызвать api можно с помощью rundll32.exe

как-то так
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #38136464
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что то я через cmd попробовал поигратиься и никакой реакции не ошибок и ни действий.
посмотрел хендлер запущенного объекта IE и подставил:
Код: javascript
1.
RUNDLL32.EXE user32,ShowWindow 458222, 1



и ничего...

Но зато это ситуация меня навела на решение, хотm оно конечно и не тривиальное, совсем не тривиальное, но зато рабочее.

Необходимо два файла:
первый(сам создатель объекта IE) run.vbs:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
'Масштаб на 100%
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Zoom\ZoomFactor", "100000", "REG_SZ"
sReg = WshShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Zoom\ZoomFactor")

'Создание объекта IE
Set objIE =  WScript.CreateObject("InternetExplorer.Application", "IE_")

'Определяем разрешение экрана, для центровки окна
Set itm = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_DesktopMonitor")
Dim res
For Each res In itm
    Exit For
Next

' Задаём опции окна IE
objIE.Left       = res.ScreenWidth/2 - 300
objIE.Top        = res.ScreenHeight/2 - 275
objIE.Height     = 550
objIE.Width      = 600
objIE.AddressBar = False
objIE.MenuBar = False
objIE.ToolBar = False
objIE.StatusBar  = False
objIE.RegisterAsBrowser = True

'Задаем вэб-приложение
objIE.Navigate url

'Открываем вэб-приложение
objIE.Visible = True

'ФИШКА В ЭТОМ
MsgBox "Загружается..."

'Ждем пока не загрузится приложение
While objIE.Busy
    Wscript.Sleep 200
Wend

While 0=0
    WScript.Sleep 1000
Wend

'=====================================
Sub IE_OnQuit()
	WScript.Quit
End Sub



второй файл(пускатель):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Set shell = CreateObject("WScript.Shell")
shell.Run "cscript run.vbs", 2

'Пауза что бы успела загрузиться консоль
WScript.Sleep 200

'убиваем процесс консоль cscript.exe
Dim strComputer, strProcessToKill, objWMIService, colProcess, objProcess
strComputer = "."
strProcessToKill = "cscript.exe"
Set objWMIService = GetObject("winmgmts:" _ 
   & "{impersonationLevel=impersonate}!\\" _ 
   & strComputer _ 
   & "\root\cimv2") 
Set colProcess = objWMIService.ExecQuery _
   ("Select * from Win32_Process Where Name = '" & strProcessToKill & "'")
For Each objProcess in colProcess
   objProcess.Terminate()
Next



Окно месседжа выводит окно на первый план и потом прибивается а окно IE остается.

Так что хоть и с большим боем но проблема побеждена!!!! УРА!

Спасибо за поддержку
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Объект InternetExplorer.Application в vbs и js
    #39160130
odin12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kasik, вместо msgbox предлагаю CODE =WSHShell.Run("%COMSPEC% /C exit", 0, True), тогда нет нужды в двух скриптах
...
Рейтинг: 0 / 0
Объект InternetExplorer.Application в vbs и js
    #39293021
Chira
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понимаю, что разрыв между сообщениями большой, но поисковик выдал эту страницу, поэтому добавлю своё предложение по определению размера экрана. Работает для разных версий IE (проверял для IE8 IE11) и на разных виндовсах (проверял на Win7x64, Win2008x86, Win2012r2).

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
objIE.FullScreen = true
intHeight = objIE.Height
intWidth = objIE.Width
objIE.FullScreen = false
objIE.Left       = intWidth/2 - 300
objIE.Top        = intHeight/2 - 275
objIE.Height     = 550
objIE.Width      = 600
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Объект InternetExplorer.Application в vbs и js
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]