powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Остановить работу Access до окончания выполнения внешней проги
5 сообщений из 5, страница 1 из 1
Остановить работу Access до окончания выполнения внешней проги
    #32301537
igor garanichev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть проблема:
Нужно из Access запустить приложение, данные из которого нужны для дальнейшей работы самого Access. Как торомзнуть работу Access до тех пор пока не отработает внешнее приложение?
...
Рейтинг: 0 / 0
Остановить работу Access до окончания выполнения внешней проги
    #32301564
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так в проекте запускается архивирование файла с данными для послед. его отправки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Public Declare Function OpenProcess Lib  "kernel32"  (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function WaitForSingleObject Lib  "kernel32"  (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Public Declare Function GetExitCodeProcess Lib  "kernel32"  (ByVal hProcess As Long, lpExitCode As Long) As Long

Public Function RunARHIV(s As String, ws As Long) As Boolean
  Dim hHandle As Long
  Dim dwProcessId As Long
  Dim lpExitCode As Long
  Dim E As Long
  Dim arj_path As String

  arj_path = {путь к архиватору}
  If Right(arj_path,  1 ) <>  "\"  Then arj_path = arj_path &  "\" 
  
  RunARHIV= False
  On Error GoTo M_End
  ChDir (arj_path)
  dwProcessId = Shell(arj_path & s, ws)
  hHandle = OpenProcess(&H1F0400,  1 , dwProcessId)                 ' $ 00000400  = PROCESS_QUERY_INFORMATION + $000F0000 STANDARD_RIGHTS_REQUIRED + $ 00100000  SYNCHRONIZE
  If hHandle <>  0  Then
    DoEvents
    Call WaitForSingleObject(hHandle, - 1 )
    Call GetExitCodeProcess(hHandle, lpExitCode)
    RunARHIV= (lpExitCode =  7 ) Or (lpExitCode =  0 )
    DoEvents
  Else
    DoEvents
    RunARHIV= True
  End If
M_End:
End Function


Вызов:
Код: plaintext
RunARHIV({командная строка для архиватора}, vbMinimizedNoFocus)


Можно организовать примерно тоже самое.
...
Рейтинг: 0 / 0
Остановить работу Access до окончания выполнения внешней проги
    #32301565
RVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Было уже здесь /topic/52937&hl=rvi#370760
...
Рейтинг: 0 / 0
Остановить работу Access до окончания выполнения внешней проги
    #32301583
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
Dim WShell As Object, ErrCode
Set WShell = CreateObject( "WScript.Shell" )
ErrCode = WShell.Run( """ C:\Program Files\WinRAR\WinRAR.exe """ ,  3 , True)
MsgBox ErrCode
...
Рейтинг: 0 / 0
Остановить работу Access до окончания выполнения внешней проги
    #32301588
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот способ:

Set wshShell = CreateObject("Wscript.Shell")
wshShell.Run "blablabla", , True 'Последний параметр - ожидать окончания рабты
Set wshShell = Nothing
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Остановить работу Access до окончания выполнения внешней проги
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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