Завершение работы запущенной программы

VaRas
Дата: 26.11.2006 18:21:05
Ребята подскажите что сделал не так.
взял отсюда модуль RunAndWait http://am.rusimport.ru/MsAccess/topic.aspx?ID=119

На выходе из формы написал так:
Private Sub Form_Close()
    RunAndWait "7-zip.exe a D:\Arhiv\arhiv.zip D:\Arhiv\*.*", "C:\Program Files\7-zip\", vbNormalFocus
End Sub

при компиляции выдает ошибку

Compile Error:
Expected variable or procedure, not module


Заранее благодарен

Access 2002 SP2
Karfaqen
Дата: 26.11.2006 18:39:22
VaRas
Expected variable or procedure, not module
Видимо, у вас модуль называется так же как функция. Назовите модуль иначе.
VaRas
Дата: 27.11.2006 12:40:16
Karfaqen
VaRas
Expected variable or procedure, not module
Видимо, у вас модуль называется так же как функция. Назовите модуль иначе.


Да Karfaqen, так и есть. Исправил. Но RunAndWait почему-то не работает, т.к., не дожидаясь завершения запускается следующая за ней операция, и выкидывает ошибку

RunTimeError 70
Permission denied
bubucha
Дата: 27.11.2006 13:00:18
всю дорогу юзал следующее (автора не знаю), использовалось для запуска экзотичекого арховатора
 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 Byte
         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 Const NORMAL_PRIORITY_CLASS = &H20&
 Private Const INFINITE = -1&

 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 WaitForSingleObject Lib "kernel32" (ByVal _
         hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal _
         hObject As Long) As Long

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

         ' Initialize the STARTUPINFO structure:
         start.cb = Len(start)

         ' Start the shelled application:
         ret = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, _
            NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)

         ' Wait for the shelled application to finish:

         ret = WaitForSingleObject(proc.hProcess, INFINITE)
         ret = CloseHandle(proc.hProcess)
End Sub

Allll
Дата: 27.11.2006 13:11:34
RunAndWait, на который Вы дали ссылку, работает нормально. Только что проверил (Access 87 & Win 98).

Попробуйте выполнить небольшой тест:
Sub test()
    RunAndWait "C:\WINDOWS\CALC.EXE", "c:\", vbNormalFocus
    Stop
End Sub
Должен запуститься калькулятор и пока вы не закроете его, не должно быть перехода на строчку с командой Stop.

Вы пробовали запустить в командной строке 7-zip.exe a D:\Arhiv\arhiv.zip D:\Arhiv\*.*? Выполняется нормально?

Я бы написал так: "C:\Program Files\7-zip\7-zip.exe" a D:\Arhiv\arhiv.zip D:\Arhiv\*.*.
Бенедикт
Дата: 27.11.2006 13:37:59
bubucha,
автор - MS, Q209876. Кстати, оригинал погибче за счёт DoEvents.
VaRas
Дата: 27.11.2006 14:01:11
Allll
Я бы написал так: "C:\Program Files\7-zip\7-zip.exe" a D:\Arhiv\arhiv.zip D:\Arhiv\*.*.

Исправил. помогло.
Всем большое спасибо