Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Power Basic

Страница: 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-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 20.10.04 00:37
Используй ShellExecute. Про это уже много раз в форуме говорили.

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #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
Асинхронный запуск процесса:

#Compile Exe
Function PBMain() As Long
Dim ProgID As Dword
ProgID= Shell ("project1.exe";)
MsgBox "Process ID = " & Str$(ProgID)
End Function



Синхронный запуск процесса:

#Compile Exe
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
Блин! нечо непашит :) ручки наверно крючки... Алекс пробывал два варианта, хотя прикол второго непонял
#Compile Exe
Function PBMain() As Long
Dim ProgID As Dword
Shell "project1.exe"
End Function
нафиг там
Dim ProgID As Dword
если потом просто
Shell "project1.exe"

:) или я что-то недогнла?

Сне, WinExec вообще там как не при делах... нет такой встроенной камманды. CyRax ShellExecute я так и не попробывал, так как незнаю как сказать на пб что надо
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


поможешь?

Ответить

Номер ответа: 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-сайт: basicproduction.nm.ru
 Профиль | | #10
Добавлено: 21.10.04 00:42
HACKER,
 Держи, выдрал с исходников Local Assembler. Магическая сила от LocASM безгранична и распротраняется на каждый кусок кода :)
Осторожней с этим артефактом ;)

Function APP_Path() As String
 ;Dim App_ExeNameZ As Asciiz*256, App_ExeName As String
 ;Dim 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 сторк) то
#Compile Exe
Function PBMain() As Long
Dim ProgID As Dword
ProgID= Shell ("project1.exe";)
MsgBox "Process ID = " & Str$(ProgID)
End Function
так всё нормально работало, хотя прога раздупляется что надо работать дальше через сек 5-8 после того как запускается другая прога. В моей проге, где строк около 200 прога не продолжает работать дальше. Исполняя её в дебагире она останавливается, исполняя просто exe она не выключается, дальше висит в памяти, но работать дальше нехочет :( И что теперь делать незнаю!!!

Ответить

Номер ответа: 14
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #14 Добавлено: 22.10.04 20:44
:(((((( !!!!!!!! люди, чо, всё так плохо, да?

Ответить

Номер ответа: 15
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #15 Добавлено: 24.10.04 00:12
:((((((((((((((((( тема не закрыта!!!!

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам