GetObject (VB) -> C

Тема в разделе "WASM.WIN32", создана пользователем _Juicy, 8 сен 2011.

  1. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    В Visual Basic есть функция GetObject([pathname] [, class]), которая, будучи вызвана без pathname, возвращает экземпляр указанного класса, который уже существует в системе.
    Вопрос: как реализовать то же самое на MS VC?
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    А кто этот объект создал? И какой именно возвращается?

    З.Ы. Что Вы там такое делаете?
     
  3. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    А это важно? Сервер автоматизации.

    Какие конкретно критерии вы хотите знать?

    Так... в екселе работаю :)
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Squash
    Точно GetObject же создаёт COM объекты, то-то меня стали терзать смутные сомнения. C COM на С++ тоже просто, хотя зря, лучше другой язык, С# к примеру. А так способов тьма. В MFC есть класс визард, который вам сгенерит обёртку для любого объекта. Можно напрямую через CoCreateInstance, можно через директиву #import. В общем гуглите.
     
  5. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Проблема в том, что мне нужно не создать объект, а получить уже существующий. Гугл выдал только метод для VB.
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Squash
    Это не проблема. В С++ делается аналогично.
     
  7. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Расскажете, как?
     
  8. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
  9. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    punxer, спасибо.

    Мне кажется, что мутит там ТС. По крайней мере, у меня при помощи ADsGetObject COM-объекты открывать не получилось. Наверное, она все-таки
    GetActiveObject работает как надо. Ее же использует виртуальная машина VB при вызове GetObject (пришлось засетапить и проверить). Жалко, что только локально...
     
  10. anta

    anta New Member

    Публикаций:
    0
    Регистрация:
    30 сен 2007
    Сообщения:
    2
    кто-нибудь может подсказать как реализовать вот этот vbs код
    Код (Text):
    1. Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\SecurityCenter")
    2. Set colItems = oWMI.ExecQuery("Select * from AntiVirusProduct")
    3.  
    4. For Each objAntiVirusProduct In colItems
    5.   msg = msg & "companyName: " & objAntiVirusProduct.companyName & vbCrLf
    6.   msg = msg & "displayName: " & objAntiVirusProduct.displayName & vbCrLf
    7.   msg = msg & "instanceGuid: " & objAntiVirusProduct.instanceGuid & vbCrLf
    8.   msg = msg & "onAccessScanningEnabled: " & objAntiVirusProduct.onAccessScanningEnabled & vbCrLf
    9.   msg = msg & "productUptoDate: " & objAntiVirusProduct.productUptoDate & vbCrLf
    10.   msg = msg & "versionNumber: " & objAntiVirusProduct.versionNumber & vbCrLf
    11.   msg = msg & vbCrLf
    12. Next
    13.  
    14. WScript.Echo msg
    на с++ ч/з api ADsGetObject

    в MSDN и google решения ненашел
     
  11. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    создай vbscript object и скорми ему скрипт. тут есть статьи
    Код (Text):
    1. Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\SecurityCenter")
    2. Set colItems = oWMI.ExecQuery("Select * from AntiVirusProduct")
    3.  
    4. For Each objAntiVirusProduct In colItems
    5.   msg = msg & "companyName: " & objAntiVirusProduct.companyName & vbCrLf
    6.   msg = msg & "displayName: " & objAntiVirusProduct.displayName & vbCrLf
    7.   msg = msg & "instanceGuid: " & objAntiVirusProduct.instanceGuid & vbCrLf
    8.   msg = msg & "onAccessScanningEnabled: " & objAntiVirusProduct.onAccessScanningEnabled & vbCrLf
    9.   msg = msg & "productUptoDate: " & objAntiVirusProduct.productUptoDate & vbCrLf
    10.   msg = msg & "versionNumber: " & objAntiVirusProduct.versionNumber & vbCrLf
    11.   msg = msg & vbCrLf
    12. Next
    13.  
    14. WScript.Echo msg
    http://msdn.microsoft.com/en-us/library/windows/desktop/aa390423(v=vs.85).aspx

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa389762(v=vs.85).aspx

    http://forum.shelek.ru/index.php/topic,16680.msg189574.html

    http://www.codeproject.com/KB/system/Using_WMI_in_Visual_C__.aspx

    http://www.codeproject.com/KB/system/UsingWMI.aspx

    http://win32easy.blogspot.com/2011/03/wmi-in-c-query-everyting-from-your-os.html