Страница: 1 | 2 |
Вопрос: И ешё одна фигня с ПБ...
Добавлено: 19.10.04 17:21
Автор вопроса: HACKER
Очень странно, я удевлён, но я думаю что я как обычно просто чего-то незнаю, вообщем после того как я SHELL "C:\1.bat" батик нормально выполняется, но программа потом тупо останавлявается (END) Нафига она так? Что она неможет запустит бат и дальше работать?
И ещё... как мне узнать app.path и exename
Ответы
Всего ответов: 22
Номер ответа: 1
Автор ответа:
j3d1
ICQ: 8370005
Вопросов: 34
Ответов: 466
Профиль | | #1
Добавлено: 19.10.04 17:27
Сделай CreateProccess
Номер ответа: 2
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #2
Добавлено: 19.10.04 20:12
Мммм... там я где-то писал что в ПБ я не ноль, а (0,5) наверно я всётаки ошибся... Ты немог по конкретние?
Номер ответа: 3
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #3
Добавлено: 20.10.04 00:37
Используй ShellExecute. Про это уже много раз в форуме говорили.
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 20.10.04 09:55
Или WinExec работает по аналогии с Shell VB'шным...
Номер ответа: 5
Автор ответа:
alex
Вопросов: 84
Ответов: 453
Профиль | | #5
Добавлено: 20.10.04 12:45
У функции SHELL есть еще необязательный параметр.
Ждать конца запущенного процесса, или бежать дальше сразу после запуска.
Сморти хелп по языку!
Номер ответа: 6
Автор ответа:
alex
Вопросов: 84
Ответов: 453
Профиль | | #6
Добавлено: 20.10.04 13:01
Асинхронный запуск процесса:
Function PBMain() As Long
Dim ProgID As Dword
ProgID= Shell ("project1.exe"
MsgBox "Process ID = " & Str$(ProgID)
End Function
Синхронный запуск процесса:
Function PBMain() As Long
Dim ProgID As Dword
Shell "project1.exe"
End Function
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 20.10.04 21:50
Спасиба!!!
А как насчёт узнать app.path и exename?
Номер ответа: 8
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 20.10.04 22:10
Блин! нечо непашит ручки наверно крючки... Алекс пробывал два варианта, хотя прикол второго непонял
Function PBMain() As Long
Dim ProgID As Dword
Shell "project1.exe"
End Function
или я что-то недогнла?
Сне, WinExec вообще там как не при делах... нет такой встроенной камманды. CyRax ShellExecute я так и не попробывал, так как незнаю как сказать на пб что надо
поможешь?
Номер ответа: 9
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 20.10.04 22:22
А блин... опять туплю... с ShellExecute Ну вообчем я сделал, ну всымсле написал
ShellExecute 0, "open", "C:\1.bat", "", "", 1 но честно говоря толку мало... первое что я заметил что батик ОЧЕНЬ медленно стал работать, и ещё что более обидно что прога опять тупо останавливается, никакой еррор просто так в дебагире и пишит шо Begin at... всё ок... и End Dubug но этот END происходит не тогда когда мне это надо! Может это связанно что я в батике пишу вот это "set > C:\1.tmp", кстати если это можно сделать по другому, АЙПИ функциями итп... да вообще можно, вопрос скорее "КАК"? Ну впринципе мне надо чтоб и батик то работал, так что с этой траблой всёравно разгребаться
Номер ответа: 10
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #10
Добавлено: 21.10.04 00:42
HACKER,
Держи, выдрал с исходников Local Assembler. Магическая сила от LocASM безгранична и распротраняется на каждый кусок кода
Осторожней с этим артефактом
Function APP_Path() As String
 im App_ExeNameZ As Asciiz*256, App_ExeName As String
 im SlashPos As Long
If GetModuleFileName(0&,App_ExeNameZ,255) Then
App_ExeName=App_ExeNameZ
If Len(App_ExeName)=0 Then Exit Function
SlashPos=InStr(-1,App_ExeName,"\"
If SlashPos=0 Then SlashPos=InStr(-1,App_ExeName,":"
If SlashPos=0 Then Exit Function
APP_Path=Left$(App_ExeName,SlashPos)
End If
End Function
Номер ответа: 11
Автор ответа:
alex
Вопросов: 84
Ответов: 453
Профиль | | #11
Добавлено: 21.10.04 12:42
2 Hacker
Все работает! Ты наверное слишком много пива перепил..
Dim ProgID As Dword - во втором варианте не нужен.
Короче:
Shell "Имя проги" - синхронный запуск, твое приложение
ждет пока запущеная прога закончит работу
ProgID= Shell ("project1.exe" - асинхронный запуск,
приложение работает дальше не ждя окончания запущенного
приложения
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 21.10.04 17:48
CyRax Пасиба!
alex
Хм... странно, вобще привильно, прога ждёт пока другая закончит работать, вот заканчивается у меня батик, пока он работает моя ждёт... но как батик завершается моя завершается тоже и что особо странное!!! что это всё началось до того как я выпил пиво вот штука, пиво это, странное Ладно, я ещё попробую в отдельной проге всё написать, если будет тоже самое, выложу сюды, будем разхлёбывать все, а если будет всё ок в отдельной, тогда это блин авраг какой-то!
Номер ответа: 13
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #13
Добавлено: 21.10.04 18:38
ага... значи так, когда я сделал отдельную маленькую прогу (в 10-15 сторк) то
Function PBMain() As Long
Dim ProgID As Dword
ProgID= Shell ("project1.exe"
MsgBox "Process ID = " & Str$(ProgID)
End Function
Номер ответа: 14
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #14
Добавлено: 22.10.04 20:44
((((( !!!!!!!! люди, чо, всё так плохо, да?
Номер ответа: 15
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #15
Добавлено: 24.10.04 00:12
(((((((((((((((( тема не закрыта!!!!