powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / А что в VB.Net правильнее использовать вместо Shell(VB6)?
1 сообщений из 1, страница 1 из 1
А что в VB.Net правильнее использовать вместо Shell(VB6)?
    #38858202
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VB6 Shell Function
Код: vbnet
1.
Shell(pathname[,windowstyle])


В VB.Net есть типа эквивалент (не в .Net так понимаю а именно в VB.Net), казалось бы чего париться.
VB.Net Функция Shell
Код: vbnet
1.
2.
3.
4.
5.
6.
Public Function Shell( _
   ByVal PathName As String, _ 
   Optional ByVal Style As AppWinStyle = AppWinStyle.MinimizedFocus, _ 
   Optional ByVal Wait As Boolean = False, _ 
   Optional ByVal Timeout As Integer = -1 _
) As Integer



Но я усмотрел разницу, критичную для меня.

Например есть консольное приложение proga.exe, которое надо запустить через этот Shell.
Пусть у меня в папке C:\111\test лежат 3 exe-шника:
proga.exe (консольное),
ShellTest.exe (VB.Net),
ShellTest_VB6.exe (VB6),

1. В VB6 это делалось так (из ShellTest_VB6.exe).
Код: vbnet
1.
2.
3.
Private Sub CommandShell_Click()
  Shell "proga.exe", vbNormalFocus
End Sub


Результат: выводит окно консоли, а в шапке написано: C:\111\test\ proga.exe

2. Если тоже самое сделать из VB.Net (из ShellTest.exe),
Код: vbnet
1.
2.
3.
  Private Sub ButtonShell_Click(sender As Object, e As EventArgs) Handles ButtonShell.Click
    Shell("proga.exe", AppWinStyle.NormalFocus)
  End Sub


то результат отличается:выводит окно консоли, а в шапке написано: C:\111\test\ ShellTest.exe

Т.е. .Net лепит в шапку запущенной консоли имя вызывающего exe вместо имени вызываемого exe.
А мне нужно чтоб в шапке было имя вызываемого (как в vb6), я потом окно этой консоли ищу по этой шапке.

Вроде как такой код эквивалентен:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  Private Sub ButtonProcess_Click(sender As Object, e As EventArgs) Handles ButtonProcess.Click
    Shell_Net("proga.exe", , ProcessWindowStyle.Normal)
  End Sub

  Public Sub Shell_Net(ByVal PathName As String, _
                       Optional ByVal Parameters As String = vbNullString, _
                       Optional ByVal Style As ProcessWindowStyle = ProcessWindowStyle.Normal)
    Dim ExecInfo As New ProcessStartInfo
    With ExecInfo
      .FileName = PathName
      .Arguments = Parameters
      .WindowStyle = Style
    End With
    Process.Start(ExecInfo)
  End Sub


По крайней мере он выводит в шапке консоли (как при запуске из VB6): C:\111\test\ proga.exe

Совет нужен, на что менять Shell(VB6).
Shell из VB.Net какая то странная.
На Process.Start (код как я привел)? Эквивалентно ли?
Оговорюсь еще, что я иногда указываю полный путь к exe,
а иногда указываю только имя exe (в контролируемом кодом предположении, что 1) этот exe лежит в той же папке что и запускающий и 2)эта папка является текущей т.е. CurDir)
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / А что в VB.Net правильнее использовать вместо Shell(VB6)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]