Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как поставить задержку? / 5 сообщений из 5, страница 1 из 1
09.10.2003, 16:12
    #32289104
AlTis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поставить задержку?
Из программы необходимо запустить .BAT файл, причём дальнейшее выполнение процедуры будет продолжено только после отработки этого батника.
Win2000
AC2000
...
Рейтинг: 0 / 0
09.10.2003, 16:17
    #32289112
VitalyB
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поставить задержку?
Создайте модуль

Option Compare Database
Option Explicit
Global taskID As Long

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 CloseHandle Lib "kernel32" (ByVal hObject 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 Const NORMAL_PRIORITY_CLASS = &H20&
Private Const INFINITE = -1&

Public Function ExecuteTask(Path As String, Optional Parameters As String = "") As Long
Dim Proc As PROCESS_INFORMATION
Dim startup As STARTUPINFO
Dim ret As Long
Dim cmdline As String

cmdline = Path
If Trim(Parameters) <> "" Then
cmdline = cmdline & " """ & Parameters & """"
End If
startup.cb = Len(startup)
ret = CreateProcessA(0&, cmdline, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, startup, Proc)
ExecuteTask = Proc.hProcess
End Function

Public Function IsTaskRunning(taskID As Long) As Boolean
Dim ret As Long

If taskID = 0 Then Exit Function
ret = WaitForSingleObject(taskID, 0)
IsTaskRunning = (ret <> 0)
If Not IsTaskRunning Then
ret = CloseHandle(taskID)
taskID = 0
End If
End Function

Создайте процедуру

Private Sub Кнопка7_Click()
Dim taskID As Long
taskID = ExecuteTask("c:\Phoenix\cpy.bat")
bb:
If IsTaskRunning(taskID) Then GoTo bb
End Sub

Не супер, конечно, но работает.
...
Рейтинг: 0 / 0
09.10.2003, 16:18
    #32289113
PA
PA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поставить задержку?
Set WshShell = CreateObject("WScript.Shell")
Return = WshShell.Run("my.bat", 0, true)
...
Рейтинг: 0 / 0
09.10.2003, 16:26
    #32289123
RVI
RVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поставить задержку?
Или посмотри еще здесь
...
Рейтинг: 0 / 0
09.10.2003, 17:09
    #32289199
AlTis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поставить задержку?
спасибо. Остановился на варианте RVI.
Ванриант PA не дал результатов.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как поставить задержку? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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