Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Дождаться окончания выполнения программы / 15 сообщений из 15, страница 1 из 1
08.06.2010, 07:25
    #36674535
vera_t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
Нужно заархивировать файл и выложить на ftp сервер. Для этого нужно дождаться когда архивация закончится.Использую следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
ProcessID = Shell("c:\arj.exe a -y " & file & " " & "S:\" & buk, vbNormalFocus)
    hOpen = OpenProcess(KEY_DIAL, True, ProcessID)
    Do
Call GetExitCodeProcess(hOpen, hExit)
DoEvents
Loop Until hExit <> STILL_ACTIVE
Call soprov(j)
Но после окончания архивации выполнение программы не возобнавляется. Оператор Call soprov(j)
не выполняется

пробую использовать функцию
WaitForSingleObject ( hOpen = OpenProcess(KEY_DIAL, True, ProcessID))
выходит ошибка: "функция не определена"
хотя она у меня объявлена в начале модуля:
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Помогите кто-нибудь
...
Рейтинг: 0 / 0
08.06.2010, 08:58
    #36674605
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
vera_t,

ну поменяй на Public, а в модуле чего? Если просто в модуле, то паблик, если в модуле класса\формы то правет. А вообще поищи, я с PlanB как-то обсуждал именно этот вопрос
...
Рейтинг: 0 / 0
08.06.2010, 10:13
    #36674731
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
Пример из Help-а:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")

Set oExec = WshShell.Exec("calc")

Do While oExec.Status =  0 
     WScript.Sleep  100 
Loop

WScript.Echo oExec.Status
...
Рейтинг: 0 / 0
08.06.2010, 22:07
    #36676652
ak787
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
vera_tНужно заархивировать файл и выложить на ftp сервер. Для этого нужно дождаться когда архивация закончится.Использую следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
ProcessID = Shell("c:\arj.exe a -y " & file & " " & "S:\" & buk, vbNormalFocus)
    hOpen = OpenProcess(KEY_DIAL, True, ProcessID)
    Do
Call GetExitCodeProcess(hOpen, hExit)
DoEvents
Loop Until hExit <> STILL_ACTIVE
Call soprov(j)
Но после окончания архивации выполнение программы не возобнавляется. Оператор Call soprov(j)
не выполняется

пробую использовать функцию
WaitForSingleObject ( hOpen = OpenProcess(KEY_DIAL, True, ProcessID))
выходит ошибка: "функция не определена"
хотя она у меня объявлена в начале модуля:
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Помогите кто-нибудь

ваш код рабочий, только нужна константа вместо KEY_DIAL
Const PROCESS_QUERY_INFORMATION As Long = &H400

и Loop Until hExit <> STILL_ACTIVE следует заменить на Loop Until hExit = 0
...
Рейтинг: 0 / 0
16.09.2010, 11:06
    #36849629
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
Попробывал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("C:\XmlToXls\unpack.cmd")
Do While oExec.Status =  0 
     WScript.Sleep  100 
Loop
WScript.Echo oExec.Status
На этой строчке:
Код: plaintext
1.
     WScript.Sleep  100 
Выдает ошибку:
Run-time error '424':
Object required
...
Рейтинг: 0 / 0
16.09.2010, 11:10
    #36849640
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
Gabit,

Покажите объявление и инициализацию WScript
...
Рейтинг: 0 / 0
16.09.2010, 11:21
    #36849673
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
нету, взял пример с 3-го поста, думал его не надо определять.
А как его объявить ?
...
Рейтинг: 0 / 0
16.09.2010, 11:31
    #36849701
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
Gabit,

Начнем с того, а в какой среде вы пытаетесь это выполнить????
...
Рейтинг: 0 / 0
16.09.2010, 11:31
    #36849702
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
В макросе, который находиться в файле Excel.
...
Рейтинг: 0 / 0
16.09.2010, 11:36
    #36849721
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
GabitВ макросе, который находиться в файле Excel.

Тогда сделайте так и не парьтесь:
Код: plaintext
1.
2.
Do While oExec.Status =  0 
     DoEvents
Loop
...
Рейтинг: 0 / 0
16.09.2010, 11:56
    #36849789
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
Shocker.Pro, спасибо большое !
...
Рейтинг: 0 / 0
16.09.2010, 13:51
    #36850170
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
Как говорят, аппетит с каждым разом растет,
Можно ли созданную пакетную строку запустить, пытался так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
   Dim WshShell, oExec
   Set WshShell = CreateObject("WScript.Shell")
   Str1 = "set path1=C:\Каталог1\ " & CHAR( 13 )  & "set pbat=C:\Каталог1\файл1.txt"
   Set oExec = WshShell.Exec(Str1)
   Do While oExec.Status =  0 
      DoEvents
   Loop
...
Рейтинг: 0 / 0
16.09.2010, 15:26
    #36850493
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
С помощью WScript.Shell нельзя выполнить команды операционной системы ?
Он не понимает например команду DEL, RENAME.
...
Рейтинг: 0 / 0
16.09.2010, 15:39
    #36850543
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
GabitС помощью WScript.Shell нельзя выполнить команды операционной системы ?
Он не понимает например команду DEL, RENAME.

Для этого нужно юзать Scripting.FileSystemObject
...
Рейтинг: 0 / 0
16.09.2010, 15:56
    #36850612
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания выполнения программы
Спасибо, буду попробывать
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Дождаться окончания выполнения программы / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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