Visual Basic, .NET, ASP, VBA, VBScript
 
  Справочники  
  Справочник по Windows API Справочник по Visual Basic  
     
  Функция GetObject  
 

Функция

GetObject

Синтаксис

GetObject([pathname] [, class])

Возвращает ссылку на объект ActiveX, сохраненный в файле. Функцию GetObject следует использовать при наличии текущего экземпляра объекта или для создания объекта с использованием уже загруженного файла.

Параметры

Наименование

Описание

PathName

Необязательный. Variant (String). Полный путь и имя файла, содержащего объект, который следует загрузить. Если аргумент pathname опущен, должен быть указан аргумент class.

Class

Необязательный. Variant (String). Строка, представляющая класс объекта.

Замечания

Функция использует именованные аргументы. Если текущего экземпляра объекта не существует или запуск объекта из загруженного файла являются нежелательными, следует использовать функцию CreateObject.
Если объект зарегистрирован как уникальный, создается только один экземпляр этого объекта независимо от числа вызовов функции CreateObject. Для уникального объекта функция GetObject всегда возвращает один и тот же экземпляр, если при ее вызове указана пустая строка (""). Ошибка возникает, если аргумент pathname опущен. Нельзя использовать функцию GetObject для получения ссылки на класс, созданный с помощью Visual Basic. Если pathname является пустой строкой (""), GetObject возвращает новый экземпляр объекта указанного типа. Если аргумент pathname опущен, GetObject возвращает текущий активный объект указанного типа. Если ни одного объекта указанного типа не существует, возникает ошибка.

Пример использования

'В данном примере функция GetObject создает ссылку на конкретный лист
'Microsoft Excel Worksheet (MyXL). Для того чтобы сделать Microsoft Excel
'видимым, закрыть его и т.д., используется свойство Application объекта
'Worksheet. С помощью двух вызовов API процедура Sub DetectExcel ищет
'Microsoft Excel и, если он выполняется, вводит его в таблицу выполняемых
'объектов (Running Object Table). Первый вызов GetObject приводит к ошибке,
'если Microsoft Excel еще не запущен. В этой программе ошибка приводит к
'установке значения True для флага ExcelWasNotRunning. Второй вызов GetObject
'указывает открываемый файл. Если Microsoft Excel не был запущен, то в
'результате второго вызова функции это приложение запускается, при этом
'возвращается ссылка на лист, соответствующий указанному файлу. Файл
'mytest.xls должен существовать в указанном каталоге; в противном случае
'возникает ошибка Visual Basic "Ошибка программирования объектов". Далее
'в программе делаются видимыми окно Microsoft Excel и окно, содержащее
'указанный лист. И наконец, если Microsoft Excel не выполнялся при запуске
'этой программы, метод Quit объекта Application закрывает Microsoft Excel.
'Если это приложение выполнялось до запуска данной программы, попытка
'закрыть его не предпринимается. Ссылка на лист освобождается путем
'указания для нее состояния Nothing.

'Описываем необходимые процедуры API:

Declare Function FindWindow Lib "user32" Alias _
        "FindWindowA" (ByVal lpClassName as String, _
        ByVal lpWindowName As Long) As Long

Declare Function SendMessage Lib "user32" Alias _
        "SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long _
        ByVal wParam as Long ByVal lParam As Long) As Long

Sub GetExcel()
    Dim MyXL As Object 'Переменная для сохранения ссылки на Microsoft Excel.
    Dim ExcelWasNotRunning As Boolean 'Флаг для выхода из приложения.

    'Проверка, выполняется ли Microsoft Excel.
    On Error Resume Next 'Отложенный перехват ошибок.
    'Функция GetObject, вызванная без указания первого аргумента, 
    'возвращает ссылку на экземпляр приложения. Если это приложение 
    'не запущено, возвращается ошибка. Обратите внимание на запятую, 
    'стоящую на месте отсутствующего первого аргумента.

    Set MyXL = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then ExcelWasNotRunning = True
    Err.Clear 'Очищаем объект Err на случай ошибки.
    
    'Проверка Excel. Если Excel выполняется,
    'он вводится в таблицу выполняемых объектов (Running Object table).

    DetectExcel

    'Задаем в объектной переменной ссылку на открываемый файл.
    Set MyXL = GetObject("c:\vb4\MYTEST.XLS")

    'Делаем видимым Excel с помощью свойства Application. Затем делаем
    'видимым окно, содержащее файл, с помощью семейства Windows объекта,
    'определяемого ссылкой MyXL.

    MyXL.Application.Visible = True
    MyXL.Parent.Windows(1).Visible = True

    'Здесь помещаем инструкции
    'по обработке вызванного файла.
    '...
    'Если приложение Microsoft Excel не выполнялось при запуске данной
    'программы, закрываем его с помощью метода Quit свойства Application.
    'Отметим, что при попытке выхода из Microsoft Excel строка заголовка
    'мигает и выводится приглашение сохранить все загруженные файлы.

    If ExcelWasNotRunning = True Then 
        MyXL.Application.Quit
    End IF

    Set MyXL = Nothing 'Освобождаем ссылку на приложение и электронную таблицу
End Sub

Sub DetectExcel()
    'Процедура находит выполняемый Excel и регистрирует его
    Const WM_USER = 1024
    Dim hWnd As Long
    'Если Excel выполняется, этот вызов API возвращает его дескриптор
    hWnd = FindWindow("XLMAIN", 0)
    If hWnd = 0 Then '0 означает, что Excel не выполняется
        Exit Sub
    Else 
        'Excel выполняется. Используйте функцию API SendMessage, чтобы
        'ввести его в таблицу выполняемых объектов (Running Object Table).


        SendMessage hWnd, WM_USER + 18, 0, 0
    End If
End Sub

Дополнительная информация

Категория: Функции для работы с объектами

Еще функции: CallByName, CreateObject, GetAutoServerSetting, GetObject

 
     
  VBNet online (всего: 51616)  
 

Логин:

Пароль:

Регистрация, забыли пароль?


В чате сейчас человек
 
     
  VBNet рекомендует  
   
     
  Лучшие материалы  
 
ActiveX контролы (112)
Hitman74_Library (36119)
WindowsXPControls (20739)
FlexGridPlus (19374)
DSMAniGifControl (18295)
FreeButton (15157)
Примеры кода (546)
Parol (18027)
Passworder (9299)
Screen saver (7654)
Kerish AI (5817)
Folder_L (5768)
Статьи по VB (136)
Мое второе впечатление... (11236)
VB .NET: дорога в будущее (11161)
Основы SQL (9225)
Сообщения Windows в Vi... (8788)
Классовая теория прогр... (8619)
 
     
Техническая поддержка MTW-хостинг | © Copyright 2002-2011 VBNet.RU | Пишите нам