Удаленный запуск приложения

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Malone32®
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 116
Зарегистрирован: 23.01.2005 (Вс) 21:19
Откуда: Оттуда

Удаленный запуск приложения

Сообщение Malone32® » 02.06.2008 (Пн) 8:55

Помогите с реализацией следующего:
Есть приложение на сервере, которое надо запустить с клиентского компа, при этом задав ему параметры для расчета. Как организовать такой запуск? Т.е. прога должна запуститься от клиента, а работать в памяти сервера. Если как-то неправильно выразился, то извиняюсь
Спасибо

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 02.06.2008 (Пн) 8:58

Выразился действительно не правильно.

Надо просто запустить на серверной машине некое приложение?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Malone32®
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 116
Зарегистрирован: 23.01.2005 (Вс) 21:19
Откуда: Оттуда

Сообщение Malone32® » 02.06.2008 (Пн) 9:02

ну, да

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 02.06.2008 (Пн) 10:28

Я для таких целей использовал WMI класс Win32_Process
Код: Выделить всё

Public Class WMIProcess
  ' класс для запуска процесов
  Enum PriorityEnum
    Normal = 32
    Idle = 64
    Hight = 128
    RealTime = 256
    BelowNormal = 16384
    AboveNormal = 32768
  End Enum
  Enum ShowWindowEnum
    SW_Hide = 0
    SW_Normal = 1
    SW_ShowMinimized = 2
    SW_ShowMaximized = 3
    SW_ShowNoActivate = 4
    SW_Show = 5
    SW_Minimize = 6
    SW_ShowMinNoActivate = 7
    SW_ShowNA = 8
    SW_Restore = 9
    SW_ShowDefault = 10
    SW_ForceMinimize = 11
  End Enum
  Public ProcStartInfo As Management.ManagementClass
  Function GetStarupInformation(ByVal Priority As PriorityEnum, _
                                ByVal ShowWindow As ShowWindowEnum) _
                                As Management.ManagementClass
    Dim ProcStart As New Management.ManagementClass("Win32_ProcessStartup")
    ProcStart.CreateInstance()
    ProcStart.SetPropertyValue("PriorityClass", _
                               Priority)
    ProcStart.SetPropertyValue("ShowWindow", _
                               ShowWindow)
    ProcStartInfo = ProcStart
    Return ProcStart
  End Function
  Public Function CreateProc(ByVal CommandLine As String, _
                             ByVal Compname As String, _
                             Optional ByVal UserName As String = Nothing, _
                             Optional ByVal Password As String = Nothing, _
                             Optional ByVal CurDirectory As String = Nothing, _
                             Optional ByVal ProcStartInfo _
                                      As Management.ManagementClass = Nothing)
    Dim Proc As New Management.ManagementClass("Win32_Process")
    Dim Scope = New Management.ManagementScope()
    Scope.Options.Username = UserName
    Scope.Options.Password = Password
    Scope.Path.Server = Compname

    Proc.Scope = Scope
    Dim InPars As Management.ManagementBaseObject
    Dim OutPars As Management.ManagementBaseObject
    InPars = Proc.Methods("Create").InParameters
    InPars.SetPropertyValue("CommandLine", _
                            CommandLine)
    InPars.SetPropertyValue("CurrentDirectory", _
                            CurDirectory)
    InPars.SetPropertyValue("ProcessStartupInformation", _
                            ProcStartInfo)
    OutPars = Proc.InvokeMethod("Create", _
                                InPars, _
                                New Management.InvokeMethodOptions)
    Return OutPars("ProcessId")
  End Function
End Class



Вот только приложение запуститься в фоновом режиме, это только для удаленной машины, на локальной можно использовать флаги ShowWindowEnum.

И еще для всего этого на целевой машине должен быть разрешен 135 порт.

Malone32®
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 116
Зарегистрирован: 23.01.2005 (Вс) 21:19
Откуда: Оттуда

Сообщение Malone32® » 02.06.2008 (Пн) 10:50

Mleha, а примерчика нет у тебя, а то что-то вообще не врубился в это... Спасибо!

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 02.06.2008 (Пн) 17:52

Код: Выделить всё
    Dim wp As New WMIProcess
    wp.CreateProc("notepad ""c:\windows\win.ini""", "127.0.0.1", , , , wp.GetStarupInformation(WMIProcess.PriorityEnum.Hight, WMIProcess.ShowWindowEnum.SW_ShowMaximized))


Запускает блокнот с высоким приоритетом, открывает в нем "c:\windows\win.ini".

P.S. Код для VB.NET


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 54

    TopList