Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открыть окно процесса, запущенного скрытым 
V
    Опции темы
kuzyaka
Дата 6.8.2008, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 17.12.2006

Репутация: нет
Всего: нет



Запускаю процесс, который создает SSH туннель с удаленным компом.
Код

    MyProcessSSH.StartInfo.FileName = "putty.exe"
    MyProcessSSH.StartInfo.Arguments = "аргументы"
    MyProcessSSH.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
    MyProcessSSH.Start()

Запускаю в скрытом режиме, чтобы не мешало работать.
Потом, по этому туннелю захожу на сервера удаленного компа - MySQL и VNC.
По окончании работ, мне нужно закрыть туннель, передав в окно putty команду "exit" с помощью
Код

   AppActivate(MyProcessSSH.Id)
   My.Computer.Keyboard.SendKeys("exit~", True)

Но это работает только когда окно видимо.
Вот тут и затык.

Как сделать видимым скрытый процесс?
PM MAIL   Вверх
nagg
Дата 6.8.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 6.1.2008
Где: Minsk

Репутация: нет
Всего: 4



можно послать окну сообщение WM_SHOWWINDOW c нужными параметрами (т.е. использовать WinAPI - SendMessage)
--------------------
I am the State...
PM MAIL WWW ICQ Skype   Вверх
kuzyaka
Дата 6.8.2008, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 17.12.2006

Репутация: нет
Всего: нет



Цитата(nagg @ 6.8.2008,  17:52)
можно послать окну сообщение WM_SHOWWINDOW c нужными параметрами (т.е. использовать WinAPI - SendMessage)


Попробовал.
Код

  Public Const WM_SHOWWINDOW = &H18

  Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
...
    Dim hwnd As IntPtr = MyProcessSSH.MainWindowHandle
    SendMessage(hwnd, WM_SHOWWINDOW, 1, 3)


Вообще никаких реакций на скрытое или открытое окно!!!

Попробовал функцию ShowWindow.
Код

  Public Const SW_HIDE = 0
  Public Const SW_SHOWMINIMIZED = 2
  
  Declare Function ShowWindow Lib "user32" Alias "ShowWindow" _
(ByVal hwnd As Integer, ByVal nCmdShow As Integer) As Integer
...
    MyProcessSSH.StartInfo.FileName = "putty.exe"
    MyProcessSSH.StartInfo.Arguments = "аргументы"
    MyProcessSSH.StartInfo.WindowStyle = ProcessWindowStyle.Minimized
    MyProcessSSH.Start()

   ;Необходима пауза, чтобы окно успело сформироваться
    System.Threading.Thread.Sleep(3000)

    Dim hwnd As IntPtr = MyProcessSSH.MainWindowHandle
    ShowWindow(hwnd, SW_HIDE)
...
    ShowWindow(hwnd, SW_SHOWMINIMIZED)
    AppActivate(MyProcessSSH.Id)
    My.Computer.Keyboard.SendKeys("exit~", True)
    MyProcessSSH.Close()

Результат - все прекрасно работает!!! smile 

Есть, правда одно НО!

Процесс нельзя стартовать в состоянии hidden!!!
А то функция ShowWindow не будет работать.
Это должна сделать сама функция ShowWindow, тогда она будет менять состояние окна по вашему усмотрению.

PS
Жаль  только, что без WinAPI не удалось обойтись. smile 

Это сообщение отредактировал(а) kuzyaka - 7.8.2008, 03:10
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0577 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.