В Visual Basic есть функция GetObject([pathname] [, class]), которая, будучи вызвана без pathname, возвращает экземпляр указанного класса, который уже существует в системе. Вопрос: как реализовать то же самое на MS VC?
Squash Точно GetObject же создаёт COM объекты, то-то меня стали терзать смутные сомнения. C COM на С++ тоже просто, хотя зря, лучше другой язык, С# к примеру. А так способов тьма. В MFC есть класс визард, который вам сгенерит обёртку для любого объекта. Можно напрямую через CoCreateInstance, можно через директиву #import. В общем гуглите.
Проблема в том, что мне нужно не создать объект, а получить уже существующий. Гугл выдал только метод для VB.
punxer, спасибо. Мне кажется, что мутит там ТС. По крайней мере, у меня при помощи ADsGetObject COM-объекты открывать не получилось. Наверное, она все-таки GetActiveObject работает как надо. Ее же использует виртуальная машина VB при вызове GetObject (пришлось засетапить и проверить). Жалко, что только локально...
кто-нибудь может подсказать как реализовать вот этот vbs код Код (Text): Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\SecurityCenter") Set colItems = oWMI.ExecQuery("Select * from AntiVirusProduct") For Each objAntiVirusProduct In colItems msg = msg & "companyName: " & objAntiVirusProduct.companyName & vbCrLf msg = msg & "displayName: " & objAntiVirusProduct.displayName & vbCrLf msg = msg & "instanceGuid: " & objAntiVirusProduct.instanceGuid & vbCrLf msg = msg & "onAccessScanningEnabled: " & objAntiVirusProduct.onAccessScanningEnabled & vbCrLf msg = msg & "productUptoDate: " & objAntiVirusProduct.productUptoDate & vbCrLf msg = msg & "versionNumber: " & objAntiVirusProduct.versionNumber & vbCrLf msg = msg & vbCrLf Next WScript.Echo msg на с++ ч/з api ADsGetObject в MSDN и google решения ненашел
создай vbscript object и скорми ему скрипт. тут есть статьи Код (Text): Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\SecurityCenter") Set colItems = oWMI.ExecQuery("Select * from AntiVirusProduct") For Each objAntiVirusProduct In colItems msg = msg & "companyName: " & objAntiVirusProduct.companyName & vbCrLf msg = msg & "displayName: " & objAntiVirusProduct.displayName & vbCrLf msg = msg & "instanceGuid: " & objAntiVirusProduct.instanceGuid & vbCrLf msg = msg & "onAccessScanningEnabled: " & objAntiVirusProduct.onAccessScanningEnabled & vbCrLf msg = msg & "productUptoDate: " & objAntiVirusProduct.productUptoDate & vbCrLf msg = msg & "versionNumber: " & objAntiVirusProduct.versionNumber & vbCrLf msg = msg & vbCrLf Next 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