Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Как перевести следующию строку из VBScript на VB Добавлено: 05.06.04 01:21  

Автор вопроса:  CHIPchik | ICQ: 250073303 
Как будет выглядить строка VBSCript на VB.NET?

' Создаем объект SWbemSink
Set objSink = WScript.CreateObject("WbemScripting.SWbemSink","Sink_")


За ранее спасибо!

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 05.06.04 03:33
не знать как в НЕТ, но в VB6 эта строка будет выглядеть вточности так же :)

Dim objSink as Object
Set objSink = VBA.CreateObject("WbemScripting.SWbemSink","Sink_";)

Ответить

Номер ответа: 2
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #2
Добавлено: 05.06.04 15:46
В .Net попробуй юзать Activator.CreateObject.

Ответить

Номер ответа: 3
Автор ответа:
 CHIPchik



ICQ: 250073303 

Вопросов: 1
Ответов: 3
 Профиль | | #3 Добавлено: 05.06.04 23:56
У класса Activator нет метода CreateObject,но з другими методами тоже не работает.

ПРЕДЛОЖЕННЫЕ ОТВЕТЫ НЕ РАБОТАЮТ!!!
Может есть есть какое-то простанство имен, которое следуюет подключить через директиву Imports? Перепробовал масу вариантов, но безуспешно!!!
Если кто-то знает - помогите. Буду очень благодарен!!!

Ответить

Номер ответа: 4
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #4
Добавлено: 06.06.04 14:35
А что это за WbemScripting такой?
Может тебе проще взглянуть на WMI (Windows Management Implementation)?

Ответить

Номер ответа: 5
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #5
Добавлено: 06.06.04 14:36
Сглючил.. Правильно расшифровывается Windows Management Instrumentation :)

Ответить

Номер ответа: 6
Автор ответа:
 CHIPchik



ICQ: 250073303 

Вопросов: 1
Ответов: 3
 Профиль | | #6 Добавлено: 06.06.04 15:18
Данный листинг производит подписку с помощью WMI на внутренее асинхронное событие, на VBScript все прекрасно работает, а проблема состоит в вышеприведенной строке:
' Объявляем переменные
Dim strComputer ' Имя компьютера
Dim strNamespace ' Имя пространства имен
Dim strClass ' Имя класса
Dim objService ' Объект SWbemService
Dim colProcess ' Коллекция экземпляров класса WMI
Dim objProcess ' Элемент коллекции
Dim strResult ' Результат запроса
Dim objSink ' Объект SWbemSink
Dim bdone ' Переменная для организации цикла

'***Начало ***
' Присваиваем начальные значения переменным
strComputer = "."
strNamespace = "Root\CIMV2"
strClass = "Win32_Process"
strResult = "Список процессов у которых приоритет больше 10 :" & VbCrLf
bdone = false

' Подключаемся к пространству имен WMI
Set objClass = GetObject("WinMgmts:\\" & strComputer & _
                                   "\" & strNamespace)

' Создаем объект SWbemSink
Set objSink = WScript.CreateObject("WbemScripting.SWbemSink","Sink_";)

' Выполняем метод InstancesOfAsync
objClass.InstancesOfAsync objSink, strClass

' Приостанавливаем сценарий до завершения выполнения запроса
While Not bdone
  wscript.sleep 1000
Wend

' Процедура-обработчик события OnObjectReady объекта SWbemSink
Sub Sink_OnObjectReady(objProcess, objAsyncContext)
  If objProcess.Priority > 10 Then
    ' Формируем строку для вывода
    strResult = strResult & "Имя процесса: " & objProcess.Name & vbtab & _
                            "Приоритет: " & objProcess.Priority & VbCrLf
  End If
End Sub

' Процедура-обработчик события OnCompleted объекта SWbemSink
Sub Sink_OnCompleted(iHResult, objErrorObject, objAsyncContext)
  ' Вывод на экран
  Msgbox(strResult)
  ' Изменяем значение bdone для выхода из цикла
  bdone = true
End Sub

Вот

Ответить

Номер ответа: 7
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #7
Добавлено: 06.06.04 16:16
В .Net есть свои средства для доступа к WMI. Смотри пространство имён
System.Management (оно в сборке System.Management.dll).
На этом сайте есть мой пример о том, как юзать WMI в .NET.
Также это как-то здесь на форуме обсуждалось.

Ответить

Номер ответа: 8
Автор ответа:
 Gloom



Вопросов: 0
Ответов: 36
 Профиль | | #8 Добавлено: 07.06.04 13:12

Вот чего у меня получилось:

Imports System
Imports System.Management

Module Module1
    Dim strClass As String = "Win32_Process" ' Имя класса
    Dim strResult As String = "Список процессов у которых приоритет больше 10 :" & vbCrLf  ' Результат запроса
    Dim objSink As New wmi_handler() ' Объект SWbemSink
    Dim bdone As Boolean = False ' Переменная для организации цикла


    Sub Main()
        Dim ob As New ManagementOperationObserver()
        Dim h As New wmi_handler()
        AddHandler ob.ObjectReady, AddressOf h.ObjectReady
        AddHandler ob.Completed, AddressOf h.Completed
        Dim objClass As New ManagementClass(strClass)
        objClass.GetInstances(ob)
        While Not bdone
            System.Threading.Thread.Sleep(1000)
        End While
    End Sub

    Public Class wmi_handler

        Public Sub ObjectReady(ByVal sender As Object, ByVal e As ObjectReadyEventArgs)
            Dim objProcess As ManagementBaseObject = e.NewObject
            If Convert.ToInt32(objProcess("Priority")) > 10 Then
                ' Формируем строку для вывода
                strResult = strResult & "Имя процесса: " & objProcess("Name").ToString() & vbTab & _
                                        "Приоритет: " & objProcess("Priority").ToString() & vbCrLf
            End If
        End Sub

        Public Sub Completed(ByVal sender As Object, ByVal e As CompletedEventArgs)
            ' Вывод на экран
            Console.WriteLine(strResult)
            ' Изменяем значение bdone для выхода из цикла
            bdone = True
        End Sub

    End Class
End Module

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам