Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Приостановить выполнение приложения 
:(
    Опции темы
amt
  Дата 7.11.2004, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



smile
У меня такая проблемка по VB.
По ходу выполнения приложение, написанное мною на VB, запускает command.com. При этом приложение продолжает выполнять свои операции.
Вопрос: как заставить приложение дождаться выполнения command.com и только потом продолжить выполнение своих функций?
Заранее благодарен.
amt
--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
bom
Дата 7.11.2004, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

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



'В модуле:

Код

Private Type STARTUPINFO
        cb As Long
        lpReserved As String
        lpDesktop As String
        lpTitle As String
        dwX As Long
        dwY As Long
        dwXSize As Long
        dwYSize As Long
        dwXCountChars As Long
        dwYCountChars As Long
        dwFillAttribute As Long
        dwFlags As Long
        wShowWindow As Integer
        cbReserved2 As Integer
        lpReserved2 As Long
        hStdInput As Long
        hStdOutput As Long
        hStdError As Long
     End Type

     Private Type PROCESS_INFORMATION
        hProcess As Long
        hThread As Long
        dwProcessID As Long
        dwThreadID As Long
     End Type

     Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _
        hHandle As Long, ByVal dwMilliseconds As Long) As Long

     Private Declare Function CreateProcessA Lib "kernel32" (ByVal _
        lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _
        lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
        ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
        ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _
        lpStartupInfo As STARTUPINFO, lpProcessInformation As _
        PROCESS_INFORMATION) As Long

     Private Declare Function CloseHandle Lib "kernel32" (ByVal _
        hObject As Long) As Long

     Private Const NORMAL_PRIORITY_CLASS = &H20&
     Private Const INFINITE = -1&

     Public Sub ExecCmd(cmdline$)
        Dim proc As PROCESS_INFORMATION
        Dim start As STARTUPINFO

        ' Инициализируем структуру STARTUPINFO:
        start.cb = Len(start)

        ' Запускаем приложение:
        ret& = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, _
           NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)

        ' Ждем завершения запущенного приложения:
        ret& = WaitForSingleObject(proc.hProcess, INFINITE)
        ret& = CloseHandle(proc.hProcess)
     End Sub



В любом месте:
Код

'Запуск с ожиданием завершения:
ExecCmd ("c:\command.com")




Это сообщение отредактировал(а) bom - 7.11.2004, 14:01
PM MAIL   Вверх
amt
Дата 9.11.2004, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



bom, Спасибо-о-о-О!
Твой код помог.
Маленький вопрос.
Можно ли запускать приложение (
Код

ExecCmd ("c:\command.com")
)
так, чтобы его окно не отображалось на экране. Я пробовал поковыряться в твоем коде но пока ничего не накопал.
--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
Enflout
Дата 9.11.2004, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Посмотри в MSDN CreateProcess.
PM MAIL   Вверх
amt
Дата 9.11.2004, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата
Посмотри в MSDN CreateProcess.

Templar$, я бы с радостью, но на данном этапе у меня такой возможности нет.
Может есть примерчик?

--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
Enflout
Дата 9.11.2004, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Примерчик к сожалению есть только на C++. Могу лишь сказать, что wShowWindow должен содержать SW_HIDE. Туда и копай. Если надо выложу здесь сишный пример, переписывать увы времени просто нет. smile
PM MAIL   Вверх
cardinal
Дата 10.11.2004, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Templar$, выкладывай! Интересно посмотреть smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
bom
Дата 10.11.2004, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

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



Константа SW_HIDE, о которой говорит Templar$, =0,
но почему то не получается запуск в скрытои режиме smile
За то при задании минимизированного режима - все нормально:
Код


' Инициализируем структуру STARTUPINFO:
        start.cb = Len(start)
        start.wShowWindow = 3


PM MAIL   Вверх
Enflout
Дата 10.11.2004, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
PROCESS_INFORMATION pi;
CreateProcess(NULL, "c:\\command.com", NULL, NULL, true, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);


Это кусок кода на C++, запускающий программу в скрытом виде. Счас попробую на vb переписать(вот только установлю) smile
Добавлено @ 13:49
Уфф...
Чет у меня вставка кода глючит... smile
Пришлось приводить как текст smile

Это сообщение отредактировал(а) Templar$ - 10.11.2004, 13:47
PM MAIL   Вверх
Enflout
Дата 10.11.2004, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я разобрался.
Цитата(bom @ 10.11.2004, 03:38)
Константа SW_HIDE, о которой говорит Templar$, =0,
но почему то не получается запуск в скрытои режиме
За то при задании минимизированного режима - все нормально:

Код 


' Инициализируем структуру STARTUPINFO:
         start.cb = Len(start)
         start.wShowWindow = 3





Надо добавить start.dwFlags = 1 и задать start.wShowWindow = 0
Вот так:

Код

' Инициализируем структуру STARTUPINFO:
        start.cb = Len(start)
        start.dwFlags = 1       
        start.wShowWindow = 0
       


Если что не так, поправьте меня. smile
Работоспособность проверил. smile

Это сообщение отредактировал(а) Templar$ - 10.11.2004, 20:35
PM MAIL   Вверх
amt
Дата 11.11.2004, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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




Цитата
' Инициализируем структуру STARTUPINFO:
        start.cb = Len(start)
        start.dwFlags = 1       
        start.wShowWindow = 0

Все ОК. Спасибо smile
--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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