Top-office11.ru

IT и мир ПК
36 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Internetexplorer application свойства и методы

InternetExplorer object

Controls an instance of Windows Internet Explorer through automation.

Members

The InternetExplorer object has these types of members:

Events

The InternetExplorer object has these events.

Fires before navigation occurs in the given object (on either a window or frameset element).

Fires when the enabled state of a command changes.

Fires when a document is completely loaded and initialized.

Fires when a navigation operation begins.

Fires when a navigation operation finishes, is halted, or fails.

Fires after a navigation to a link is completed on either a window element or a frameSet element.

Fires after a navigation to a link is completed on a window element or a frameSet element.

Creates a new process to handle the navigation.

Fires when a new window is to be created.

Fires when a new window is to be created.

Raised when a new window is to be created. Extends NewWindow2 with additional information about the new window.

Fires when the FullScreen property is changed.

Fires when the MenuBar property is changed.

Fires before the Internet Explorer application quits.

Fires when the StatusBar property is changed.

Fires when the TheaterMode property is changed.

Fires when the ToolBar property is changed.

Fires when the Visible property of the object is changed.

Fires when a print template is instantiated.

Fires when a print template is destroyed.

Fires when the progress of a download operation is updated on the object.

Fires when the PutProperty method of the object changes the value of a property.

Fires when the status bar text of the object has changed.

Fires when the title of a document in the object becomes available or changes.

Fires when the visibility state of a content window, such as the browser window or a tab, changes.

Methods

The InternetExplorer object has these methods.

EventDescription
BeforeNavigate

Executes a command and returns the status of the command execution using the IOleCommandTarget interface.

Gets the value associated with a user-defined property name.

Navigates backward one item in the history list.

Navigates forward one item in the history list.

Navigates to the current home or start page.

Navigates to the current search page.

Navigates to a resource identified by a URL or to a file identified by a full path.

Navigates the browser to a location that might not be expressed as a URL, such as a PIDL for an entity in the Windows Shell namespace.

Associates a user-defined name/value pair with the object.

Queries the object for the status of commands using the IOleCommandTarget interface.

Reloads the file that is currently displayed in the object.

Reloads the file that is currently displayed with the specified refresh level.

Cancels a pending navigation or download, and stops dynamic page elements, such as background sounds and animations.

Properties

The InternetExplorer object has these properties.

MethodDescription
ExecWB

Sets or gets a value indicating whether the address bar of the object is visible or hidden.

Gets the automation object for the application that is hosting the WebBrowser Control.

Gets a value that indicates whether the object is engaged in a navigation or downloading operation.

Gets an object reference to a container.

Gets the automation object of the active document, if any.

Retrieves the fully qualified path of the Internet Explorer executable.

Sets or gets a value that indicates whether Internet Explorer is in full-screen mode or normal window mode.

Sets or gets the height of the object.

Sets or gets the coordinate of the left edge of the object.

Retrieves the path or title of the resource that is currently displayed.

Gets the URL of the resource that is currently displayed.

Sets or gets a value that indicates whether the Internet Explorer menu bar is visible.

Sets or gets a value that indicates whether the object is operating in offline mode.

Gets the parent of the object.

Retrieves the system folder of the Internet Explorer executable.

Gets the ready state of the object.

Sets or gets a value that indicates whether the object is registered as a top-level browser window.

Sets or gets a value that indicates whether the object is registered as a drop target for navigation.

Sets or gets a value that indicates whether the object can be resized.

Sets or gets a value that indicates whether the object can display dialog boxes.

Sets or gets a value that indicates whether the status bar for the object is visible.

Sets or gets whether the object is in theater mode.

Sets or gets whether toolbars for the object are visible.

Sets or gets the coordinate of the top edge of the object.

Gets a value that indicates whether the object is a top-level container.

Gets the user type name of the contained document object.

Sets or gets a value that indicates whether the object is visible or hidden.

Sets or gets the width of the object.

Remarks

Windows Internet Explorer 8. On Windows Vista, to create an instance of Internet Explorer running at a medium integrity level, pass CLSID_InternetExplorerMedium (defined in exdisp.idl) to CoCreateInstance. The resulting InternetExplorerMedium object supports the same events, methods, and properties as the InternetExplorer object.

Examples

The following example uses CreateObject in Visual Basic to launch an instance of Internet Explorer.

The following C# example launches an instance of Internet Explorer and navigates to a Web page. The code also demonstrates how to create an event handler to listen for the BeforeNavigate2 event. The project requires a reference to the Microsoft Internet Controls (SHDocVw) type library.

Генерация и обработка событий

До появления системы Windows разработка многих программ следовала в строгом соответствии с процедурным подходом

До появления системы Windows разработка многих программ следовала в строгом соответствии с процедурным подходом. То есть мы запускали программу и ждали, когда она закончит выполняться. По завершении ее работы на экране снова появлялось приглашение командной строки, и можно было запускать другую программу. С появлением Windows в дизайне программ стала преобладать другая парадигма: событийно-управляемое программирование. Всякий раз, когда мы интерактивно взаимодействуем с приложением, происходит некоторое событие. Например, если мы щелкаем мышью по командной кнопке, имеющейся в какой-либо форме или на Web -странице, то, говоря языком программирования, мы тем самым генерируем для данной кнопки событие Click . Для его обработки программист должен написать соответствующую процедуру. Если такая процедура отсутствует, то система Windows просто проигнорирует это событие.

Данная концепция работы с событиями может использоваться и в сценариях. Иначе говоря, мы можем писать событийно-управляемые сценарии. Прежде чем я расскажу о том, как создавать такие сценарии, следует разобраться в том, как возникают события и познакомиться с терминологией, используемой для описания этого процесса.

Источник события подает сигнал о том, что оно произошло. Широковещательное распространение этого сигнала называется генерацией события. События могут генерироваться любым объектом, который в этом случае называют источником события ( event firer или event sender ). Реакция на событие формируется в приемнике ( event receiver ), а сам этот процесс называется «перехватом» ( trapping ) или «приемом» ( sinking ) события. Приемниками событий (их также часто называют обработчиками ( handler или sink )) обычно являются некоторые процедуры. Итак, источник порождает событие, а приемник перехватывает его и выполняет соответствующие действия.

В общем случае, те события, с которыми мы можем работать в сценариях, можно разделить на четыре типа:
· события, порождаемые элементами управления ActiveX
· события, порождаемые ошибками
· события, порождаемые специальным программным кодом, реализованным с помощью Windows Script Components ( WSC )
· события, порождаемые специальным программным кодом, реализованным с помощью Windows Management Instrumentation (WMI)

Ниже будут рассмотрены первые три типа событий, порождаемые ActiveX , ошибками и WSC . События WMI будут обсуждаться в другой статье .

События ActiveX

Если вы разрабатываете сценарии, то наверняка знаете, как использовать элементы управления Active X . Обычно эти элементы имеются у объектов, у которых есть свои методы, свойства и события. Если элементы управления поддерживают автоматизацию, то мы можем взаимодействовать со всеми или частью этих методов, свойств и событий через сценарии. В частности, автоматизацию поддерживает объект InternetExplorer . Application – корневой объект приложения Microsoft Internet Explorer ( IE ), поэтому мы можем использовать его в сценариях, управляемых событиями.

В объекте WScript , который является корневым в иерархии объектной модели Windows Script Host ( WSH ), имеется возможность перехватывать события, порождаемые элементами управления Active X . Данный объект доступен из любого сценария WSH , поэтому для того чтобы обращаться к его методам и свойствам, нет необходимости специально его создавать.

Чтобы создать экземпляр объекта Active X , используется метод CreateObject объекта WScript . Причина, по которой следует использовать именно метод CreateObject объекта WScript , а не функцию CreateObject , имеющуюся в VBScript , можно выразить, в частности, так: «Принципиальная разница между методом CreateObject и функцией CreateObject состоит в их дополнительных вторых параметрах (соответственно, strPrefix и location ). Второй параметр метода CreateObject поддерживает перехват событий от объектов автоматизации и источников событий. Что касается второго параметра функции CreateObject , то он используется для создания объектов на удаленных компьютерах».

Все, что требуется для создания обработчика событий – это второй параметр метода CreateObject . Например, при помощи команды

создается объект InternetExplorer . Application и организуется обработка событий, генерируемых этим объектом. Второй параметр ( IE _) определяет префикс, который мы должны использовать в имени процедуры, являющейся обработчиком событий. Имя обработчика должно начинаться с этого префикса (обычно представляет собой сокращенное название объекта), за которым следует имя обрабатываемого события. Например, имя обработчика для события onQuit объекта IE может выглядеть как IE _ onQuit .

В принципе, данное соглашение об именовании не является строго обязательным. Некоторые разработчики предпочитают использовать в качестве префикса не имя объекта, а обозначение SINK _. Но все это хорошо до тех пор, пока вам не потребуется отслеживать в сценарии события от двух или более объектов. В этом случае придется использовать имена SINK 1_, SINK 2_ и т.д., что, в конечном счете, может привести к путанице.

Как отмечалось выше, обработчиками событий являются процедуры, поэтому для их создания используется предложение Sub языка VBScript . Например, создание процедуры, обрабатывающей событие onQuit приложения IE может быть реализовано следующим образом:

Sub IE _ onQuit
‘ Здесь размещаются команды, выполняемые процедурой.
End Sub

Какие именно действия должны выполняться в ответ на то или иное событие, зависит от события, а также от того результата, который вы хотите получить. Рассмотрим представленный в Листинге 1 пример сценария SimpleEventSink.vbs. Он начинается с предложения Option Explicit и объявления переменной objIE . Далее создается экземпляр объекта InternetExplorer.Application, для которого формируется ссылка на переменную objIE . Поскольку данный объект будет перехватывать события, для обработки события onQuit создана процедура IE_onQuit (см. фрагмент с меткой A Листинга 1). Обработчик IE_onQuit после приема события выполняет два действия. Сначала он выводит сообщение о том, что событие произошло. Далее, используя метод Quit объекта WScript , он принудительно завершает сценарий. Завершение сценария реализовано в обработчике события по той причине, что в основном теле сценария вызывается окно IE в видимом режиме и запускается бесконечный цикл, ожидающий приема события. Таким образом, если обработчик события не будет завершать сценарий, его выполнение не закончится никогда.

Внутри бесконечного цикла с помощью метода Sleep объекта WScript выполнение сценария приостанавливается на 5 миллисекунд (5 мс). Если вы используете бесконечный цикл, подобный этому, то обязательно добавляйте в него строку Sleep . Если этого не сделать, процесс WSH займет более 90% ресурсов процессора, в результате чего завершить этот процесс вы сможете только с помощью диспетчера задач Task Manager Windows .

Также следует убедиться в том, что при обработке события onQuit останавливается процесс закрытия IE . При приеме какого-либо события может возникнуть ситуация, когда источник события ожидает результатов. Данная задержка обычно не приводит к проблемам, но если ваша программа входит в обобщенный процесс, то это может предотвратить закрытие IE .

События, порождаемые ошибками

В сценариях WSH перехват событий, связанных с ошибками, и формирование отклика на них выполняются автоматически. Допустим, вы написали сценарий из четырех строк, третья строка которого выдает ошибку. Когда выполнение сценария доходит до третьей строки, WSH генерирует событие ошибки. Далее WSH автоматически перехватывает это событие, завершает выполнение сценария и стандартным образом выводит подробное описание ошибки в диалоговое окно или в командную строку, в зависимости от того, как был запущен сценарий (через wscript . exe или cscript . exe , соответственно).

Вы можете принудительно отключить обработку ошибок в сценарии WSH , для чего в него включается предложение On Error Resume Next . Если используется эта инструкция и WSH обнаруживает ошибку, то, по возможности, он будет продолжать дальнейшее выполнение сценария. Иначе говоря, при этом выполнение сценария не прекращается. Обычно инструкция On Error Resume Next размещается в начале сценария, хотя, в принципе, она может включаться в текст в любом месте.

Если используется инструкция On Error Resume Next , тогда вам следует предусмотреть в своем сценарии какие-либо альтернативные методы проверки ошибок. В одном из примеров для перехвата и обработки ошибок периода выполнения применяется процедура CheckError . Она использует возможности объекта Err , имеющегося в VBScript , который возвращает информацию об ошибках периода выполнения. Этот внутренний объект имеет глобальную область действия, поэтому специально создавать его экземпляр внутри сценария не требуется. А поскольку мы можем задавать свойства объекта Err , следовательно, в сценариях можно генерировать ошибки, которые могут быть автоматически обработаны либо WSH , либо другим обработчиком ошибок (например, таким как процедура CheckError ).

Пример того, как можно работать с объектом Err , показан в Листинге 2 (сценарий SimpleRaiseError . vbs ). Если вы хотите генерировать какие-либо свои ошибки, тогда нужно использовать для них шестнадцатеричные значения, превышающие 80040000. Поэтому в сценарии SimpleRaiseError.vbs сначала объявляется константа vbObjectError, ей присваивается шестнадцатеричное значение 80040000, которое затем увеличивается на 1.

Далее объект Err очищается с помощью метода Clear , таким образом, исключается возможность существования ошибок, появлявшихся ранее. Вообще говоря, очистка существующих параметров ошибок перед генерацией новой ошибки является хорошей практикой, поскольку в противном случае объект Err может содержать данные, сохранившиеся в нем от предыдущей ошибки. Когда WSH обнаруживает строку, содержащую метод Clear или предложение On Error Resume Next , он сбрасывает свойства объекта Err в 0 (т.е. присваивает им пустые значения).

После очистки параметров ошибки я использую метод Raise объекта Err с тремя из пяти возможных параметров. Первый параметр представляет собой номер ошибки, который я предполагаю использовать, в данном случае это число 80040001. Второй параметр определяет источник в объекте или сценарии, являющийся причиной возникновения ошибки. Третий параметр — это строка, содержащая краткое описание ошибки. Два оставшиеся параметра, которые я не стал использовать – параметры helpfile и helpcontext – применяются для задания указателей на файл подсказки Help и на раздел в этом файле, соответственно. Эти параметры вы вряд ли будете использовать в сценариях. Завершается сценарий выводом на экран информации, принятой объектом Err , для чего используется функция MsgBox .

Чтобы получить более подробную информацию о методах обработки ошибок, зайдите на страницу TechNet Script Center ( http :// www . microsoft . com / technet / scriptcenter / default . asp ). Затем в каталоге , находящемся слева , последовательно перейдите по ссылкам Scripting Guides, Windows 2000 Scripting Guide, Scripting Concepts and Technologies for System Administration, VBScript Primer, VBScript Reference, Error Handling.

События WSC

Компоненты управления, поддерживающие автоматизацию, можно создавать самостоятельно – причем для этого не надо быть программистом или иметь какое-либо инструментальное средство для разработки программ. В качестве альтернативы программированию вы можете создавать собственные компоненты управления с поддержкой автоматизации и затем регистрировать их для дальнейшего использования. Аналогично компонентам управления Active X , подобные компоненты могут иметь свои методы, свойства и события. Они называются компонентами WSC .

Более подробную информацию о WSC можно получить из Microsoft Developer Network ( MSDN ) Library ( http :// msdn . microsoft . com / library ). Для этого в левой части окна, где отображаются каталоги, последовательно перейдите по следующим ссылкам: Web Development , Scripting , Documentation , Windows Script Technologies , Windows Script Components .

Жизнь, полная событий

Надеюсь, что данная публикация послужит для вас хорошим введением в основы работы с событиями в WSH . В следующей статье я расскажу, как создавать более сложные сценарии, управляемые событиями, в том числе сценарии, которые выполняют перехват событий, порождаемых ошибками сценариев, выполняемых удаленно, а также сценарии, осуществляющие синхронный и асинхронный мониторинг событий с использованием WMI .

internetexplorer.application hangs on readystate=1 in VBA

I have an Excel VBA application which uses internetexplorer.application to explore an application. Starting around 2/21/15, this application started failing on readyState being stuck on 1 forever rather than ultimately migrating to 4. This only occurred when navigating the second (or further) link. The first URL works fine.

The machine with the problem is a Core i5 M520 CPU (4 CPU) running 64-bit Windows 7.

Another machine with a Core 2 Duo T9400 running 32-bit Windows 7 executes the code without a problem.

This feels like some sort of race condition but I am not sure if I have to do something special under 64-bit windows.

I am using Internet Explorer 11, Windows 7, and Excel 2003 (or 2013). Any idea on what is going wrong?

3 Answers 3

«Funny thing», sometimes the loop objIE.readyState <> 4 works, sometimes it doesn’t and hangs with readyState = 1 ( READYSTATE_LOADING ) even though the browser window is obviously finished loading.

It works best if I add a Sleep/DoEvents-loop (>500ms) after navigate and before doing anything else with the IE-object:

Hope that helps!

I’d say all the next as a comment, but have no comment privilige.

(1) You say that it’s stuck on readystate 1. Perhaps a silly question, but, how do you actually know that?

(2) It helps to disable irrelevent things when debugging. So comment-out the PeruseTheDocument call, and try again (on the off-chance that it’s something to do with that procedure).

(3) Not the cause of your problem, but: while a document is loading, IE.BUSY is TRUE for most but not all of the time. It actually does go FALSE occasionally before the document has fully loaded. So waiting on IE.BUSY=FALSE is generally not correct. In your case that won’t make any difference, because then you wait for readystate 4. But I’d remove the BUSY check, since it serves absolutely no purpose whatever, and it’s based on a misunderstanding of what that property actually means.

(Geez this interface makes things hard!! I have to make this an answer, because it’s too long for a comment.)

Your problem doesn’t occur for me.

I don’t have access to VBA, so I converted your code to VBScript. The difference is irrelevant to the issue at hand. Copy & paste my code into a file with .VBS extension. Double-click to run, and you’ll see each page go ready in turn.

Note that VBScript variables are declared untyped, never eg. «As Object». I also made objIE local to procedure Test_IE_Interface(), then pass it explicitly to LoadAPage() — that’s better design than using a global (but irrelevant to the problen at hand).

My conclusion is that either (1) you’re inadvertantly not actually showing us the actual code that is actually running; or (2) there’s something wrong with your network stack or internet connectivity. Personally I doubt it is (2).

Try my VBS code, see if it works, then convert it back to VBA and see what happens.

Отображение документов HTML с помощью Internet Explorer

В этой лекции вы узнаете, как:

  • исследовать объектную модель Microsoft Internet Explorer;
  • просматривать в вашем приложении документы HTML;
  • использовать события Internet Explorer.

В «Работа с элементами управления из области элементов» для отображения в форме веб-адреса вы использовали элемент управления LinkLabel . В некоторых случаях для того, чтобы открывать интернет-браузер, вы использовали в коде метод System.Diagnostics.Process.Start . В части 6 вы снова обратитесь к соединению ваших программ на Microsoft Visual Basic .NET с интернетом. Вы научитесь использовать в программе методы, свойства и события приложения Internet Explorer, а также узнаете, как создавать на Visual Basic .NET веб-приложения с помощью элементов управления с закладки Web Forms окна Области элементов. Многие методики веб-программирования требуют от вас навыков, которые вы получили в предыдущих частях книги.

В этой лекции вы узнаете, как с помощью объекта отображать в ваших приложениях HTML-документы. Internet Explorer является программируемой компонентой со свойствами, методами и событиями, которые доступны на всех компьютерах, где установлена его копия. По мере исследования объектной модели Internet Explorer вы узнаете, как добавлять объект Internet Explorer в ваши проекты на Visual Basic и как использовать его методы, свойства и события для отображения HTML-документов. Преимущество непосредственного использования Internet Explorer состоит в том, что вы можете отображать сложные HTML-документы и веб-страницы без самостоятельного написания браузера.

Что нового в Visual Basic .NET?

  • С первым выпуском Visual Basic 6 поставлялась версия Internet Explorer номер 4. В состав Visual Basic .NET 2002 и 2003 была включена версия Internet Explorer 6. Обе версии в целом совместимы, так что если вы писали программы на Visual Basic 6, которые использовали предыдущие версии Internet Explorer, у вас не должно возникнуть больших проблем при компиляции их под Visual Basic .NET и новые версии Internet Explorer.
  • Чтобы использовать в программе на Visual Basic .NET функции Internet Explorer, необходимо добавить с помощью команды Add Reference (Добавить ссылку) из меню Project (Проект) ссылку на библиотеку объектов Microsoft Internet Controls.

Начало работы с объектом Internet Explorer

Microsoft Internet Explorer является приложением браузера общего назначения, которое отображает документы HTML, расположенные в интернете или на вашем жестком диске. Microsoft разработала Internet Explorer таким образом, что его можно использовать, как отдельное приложение (запускаемое через меню Пуск), или как объектную компоненту в вашей собственной программе. Соответственно, Internet Explorer предоставляет свои функции в виде коллекции свойств , методов и событий. Все они составляют понятную объектную модель, которую можно использовать в ваших программах. Вы можете исследовать объектную модель Internet Explorer с помощью Object Browser (Обозревателя объектов) из Microsoft Visual Studio.

Объект Internet Explorer не является элементом управления, включенным в окно Области элементов среды Microsoft Visual Basic .NET. Он является библиотекой COM, которая есть на всех системах, где установлена копия Internet Explorer (другими словами, на всех системах, на которых Internet Explorer прописан в системном реестре). Так как Microsoft использует Internet Explorer для отображения файлов справочной системы многих своих приложений, вы обнаружите библиотеку объектов Internet Explorer на большинстве систем, на которых установлено программное обеспечение Microsoft.

Добавление в приложение ссылки на элементы управления для интернета

Первым шагом при использовании объекта Internet Explorer является добавление в ваше приложение COM-ссылки на библиотеку объектов. Вы делаете это с помощью команды Add Reference (Добавить ссылку) из меню Project (Проект) среды Visual Basic, как показано в следующем упражнении. Попрактикуйтесь сейчас в добавлении ссылки, или просто запомните эти шаги для дальнейшего использования. (Программа, которую я использую в этой лекции, уже включает эту ссылку, но вы должны научиться сами добавлять такие ссылки, если вы хотите изучать объектную модель более подробно.)

Включение объекта Internet Explorer в ваш проект
  1. Запустите Visual Studio, и создайте в папке c:vbnet03sbsГл.21 новый проект с именем My Explorer Objects. Будет создан новый проект, и в Конструкторе Windows Forms появится пустая форма.
  2. В меню Project (Проект) щелкните на команде Add Reference (Добавить ссылку).
  3. Щелкните на закладке COM диалогового окна Add Reference (Добавить ссылку).

Прокрутите окно до ссылки Microsoft Internet Controls, щелкните в диалоговом окне на Microsoft Internet Controls, а затем на Select (Выбрать). Ваше диалоговое окно будет выглядеть так, как показано на рисунке ниже.

Исследование объектной модели Internet Explorer

Прежде, чем вы начнете использовать объект Internet Explorer в вашей программе, потратьте немного времени и изучите с помощью Object Browser (Обозревателя объектов) из Visual Studio его свойства, методы и события. Объект Internet Explorer хранится в классе с именем InternetExplorer, который является членом библиотеки SHDocVw — ссылки на Microsoft Internet Controls, которую вы только что добавили в ваш проект. В классе InternetExplorer есть свойства, методы и события, которые вы можете использовать для отображения документов HTML в ваших программах. Object Browser (Обозреватель объектов) — это самый полезный источник информации об объектной библиотеке, которая не поставляется в составе Visual Basic. Библиотека объекта Internet Explorer — хороший пример такого случая.

Читать еще:  Как переводить страницу в мозиле
Ссылка на основную публикацию
Adblock
detector
PropertyDescription