примеры уже были..

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
skulida
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 28.06.2003 (Сб) 12:16
Откуда: Санкт-Петербург

примеры уже были..

Сообщение skulida » 19.10.2004 (Вт) 9:13

благодаря участникам конференции имею код, который запускает приложение, и ожидая его окончания, продолжает свой алгоритм.
В частности, нужно запустить пакетный файл архивирования бухгалтерии 1с, а затем получив архив сохранить его с датой в качестве именем
так вот все работает, НО не в случае пакетного файла вида:

"C:\Program Files\1Cv77\BIN\1cv7.exe" config /d\\master\buh\Bases_1C\Buh_423 /nАдминистратор /@\\master\buh\Bases_1C\Buh_423\arc.txt

вопрос почему?


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
'
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

Private Sub Form_Load()
ExecCmd ("1.bat")
On Error GoTo Error1
FileCopy "\\master\arc\1cv.zip", "\\master\arc\" & Date & ".zip"
MsgBox "....", vbOKOnly + vbExclamation, "ok!"
GoTo normal
Error1:
MsgBox "....", vbOKOnly + vbExclamation, "error!"
End
normal:
End
End Sub

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.10.2004 (Вт) 9:55

Чел...
Поясни, что не работает...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.10.2004 (Вт) 10:10

Могу предположить, что глюки происходят с русскими именами. Советую преобразовать строки в OEM-кодировку.
Lasciate ogni speranza, voi ch'entrate.

skulida
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 28.06.2003 (Сб) 12:16
Откуда: Санкт-Петербург

Сообщение skulida » 19.10.2004 (Вт) 10:11

в данном случае - не работает ожидание окончания выполнения командной строки, т.е запускается приложение, далее запускается командная строка и. не дожидаясь окончания работы 1с, выполняется следующая команда FileCopy...
Если, например, в командном файле разместить просто какие команды или приложение, то все работает корректно, но в случае с пакетным файлом 1с не получается..

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.10.2004 (Вт) 10:15

Может быть тебе обойтись bat-файлом?
Его для такой задачи вполне достаточно. Могу предложить листинг bat-файла, который использует в качестве архива дату и время (для NT-систем).
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.10.2004 (Вт) 10:15

Полное содержание bat приведи?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

skulida
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 28.06.2003 (Сб) 12:16
Откуда: Санкт-Петербург

Сообщение skulida » 19.10.2004 (Вт) 10:18

[quote="alibek"]
так ведь внутри кода у меня нет этой строки, а вызываю я ее через внешний пакетный файл...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.10.2004 (Вт) 10:23

Что-то не найду файл. Но будет что-то вроде этого:
Код: Выделить всё
@echo off
...
set BakDate=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%
set BakTime=%TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2%
set BakFile=%BakDate% @ %BakTime%
"C:\Program Files\1Cv77\BIN\1cv7.exe" config /d\\master\buh\Bases_1C\Buh_423 /nАдминистратор /@"\\master\buh\Bases_1C\Buh_423\%BakFile%.txt"
set BakFile=
set BakDate=
set BakTime=
Lasciate ogni speranza, voi ch'entrate.

skulida
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 28.06.2003 (Сб) 12:16
Откуда: Санкт-Петербург

Сообщение skulida » 19.10.2004 (Вт) 10:24

GSerg

ну собственно в сообщении указана вся строка командного файла.
"C:\Program Files\1Cv77\BIN\1cv7.exe" config /d\\master\buh\Bases_1C\Buh_423 /nАдминистратор /@\\master\buh\Bases_1C\Buh_423\arc.txt

сам по себе он работает -
запускает 1с в режиме конфигуратора и сохраняет базу по указанному пути в соответствии с внутренними настройками из arc.txt

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.10.2004 (Вт) 10:25

Кстати, советую вызывать bat-файлы не 1.bat, а cmd /c 1.bat.
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.10.2004 (Вт) 10:26

Думается мне, что запуск софта из bat всё равно асинхронный :)

Посему - забей на bat и напрямую вставляй свою ужасную командную строку в ExecCmd.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

skulida
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 28.06.2003 (Сб) 12:16
Откуда: Санкт-Петербург

Сообщение skulida » 19.10.2004 (Вт) 10:32

alibek
спасибо....
через динамические переменные работает. но хотелось бы разобраться почему не работает в приведенном примере...
к тому же предполагается что этим будут пользовать сами бухгалтеры и им нужны окошки подтверждения - что операция прошла успешно или не успешно и по такой причине...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.10.2004 (Вт) 10:55

Если софт вызывать через start /w или call (для bat-файлов), то запуск будет синхронным. Хотя насчет call не уверен.
Lasciate ogni speranza, voi ch'entrate.

skulida
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 28.06.2003 (Сб) 12:16
Откуда: Санкт-Петербург

Сообщение skulida » 19.10.2004 (Вт) 13:58

ну вообщем..
действительно. если не заморачиваться со внешними пакетными файлами, а использовать строку внутри кода, то все вроде бы работает...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.10.2004 (Вт) 17:34

alibek писал(а):Если софт вызывать через start /w или call (для bat-файлов), то запуск будет синхронным. Хотя насчет call не уверен.

Насчёт call подтверждаю.
Только в данном случае - для запуска ехе - это всё равно неприменимо.
Изображение

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 20.10.2004 (Ср) 7:51

А покажи как ты cmdline формируешь...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 9

    TopList