:: Visual Foxpro, Foxpro for DOS
Запуск 32-битного приложения из FPD 2.6
sphinx
Автор

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Запуск сделал через запуск start.bat. Но вот в чем вопрос - из среды FPD 2.6 прекрасно запускается, а из программы - пишет неверная команда.

start.bat:

Run cmd /c \\server\share\my.exe

Коллеги, кто подскажет, что надо подкрутить, чтоб полетело.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Запуск 32-битного приложения из FPD 2.6
Каратаев

Сообщений: 3977
Откуда: Алматы
Дата регистрации: 04.12.2001
Не уверен, но может быть дело в количестве файлов? Я имею в виду, что для FPD прописывали в конфиге 25 файлов, что-ли...


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.
Ratings: 0 negative/0 positive
Re: Запуск 32-битного приложения из FPD 2.6
Каратаев

Сообщений: 3977
Откуда: Алматы
Дата регистрации: 04.12.2001
А ещё вот нашёл у себя в работающей проге:
LOCAL lcBatFile
m.lcBatFile = "go_ftp.bat"
set default to (m.tcPathUpdater)
lcCommand = m.lcBatFile
loWshShell = CREATEOBJECT("WScript.Shell")
TRY
loWshShell.RUN(lcCommand, 0, .T.)
CATCH TO oErr
* =MESSAGEBOX(oErr.ErrorNo)
ENDTRY
RELEASE loWshShell
Тут принцип запуска другой немного...


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.
Ratings: 0 negative/0 positive
Re: Запуск 32-битного приложения из FPD 2.6
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
Каратаев
loWshShell = CREATEOBJECT("WScript.Shell")
TRY
loWshShell.RUN(lcCommand, 0, .T.)
CATCH TO oErr
* =MESSAGEBOX(oErr.ErrorNo)
ENDTRY
В FPD? Ну-ну...

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/1 positive
Re: Запуск 32-битного приложения из FPD 2.6
sphinx
Автор

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Скомпилировал ЕХЕ под FPD 2.6 для запуска этого BAT- файла - сам по себе идеально работает. Почему не получается его старт из программы?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Запуск 32-битного приложения из FPD 2.6
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
sphinx
Скомпилировал ЕХЕ под FPD 2.6 для запуска этого BAT- файла - сам по себе идеально работает. Почему не получается его старт из программы?
А скомпилированный EXE - это разве не программа?

1) Приведи код того PRG, который "идеально работает"
2) и кусок того PRG, который выдаёт ошибку
3) Текст файла start.bat
4) И полный оригинальный текст ошибки приложи (можно скрин).

Цитата:
start.bat:
Run cmd /c \\server\share\my.exe
А что означает Run cmd /c в bat-файле?
И зачем вообще нужен bat-файл, если в нем ничего нет, кроме вызова EXE?



Исправлено 1 раз(а). Последнее : akvvohinc, 05.06.23 15:05
Ratings: 0 negative/0 positive
Re: Запуск 32-битного приложения из FPD 2.6
sphinx
Автор

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
akvvohinc
1) Приведи код того PRG, который "идеально работает"

_run.prg
RUN CMD /C start.bat



akvvohinc
3) Текст файла start.bat
Выше приводил.
start.bat:
Run cmd /c \\server\share\my.exe && это собранный уже в VFP 9.0, а значит 32-битное приложение.



akvvohinc
А что означает Run cmd /c в bat-файле?
Запуск внешней программы осуществляется через командный процессор CMD.EXE




akvvohinc
И зачем вообще нужен bat-файл, если в нем ничего нет, кроме вызова EXE?
Напрямую, боюсь не запустить 32-битное приложение из 16-битного (DOS), ибо отсутствует защищенный режим. А через BAT-файл очень даже запускается. Но при запуске _RUN.EXE (или _RUN.PRG) из основной DOS-программы (она даже не скомпилирована, запускается через foxprox.exe -t main.prg) - выдается сообщение "Невозможно выполнить команду".

Вот и спрашиваю - ПОЧЕМУ? Ведь в отдельности запускается. Запускаемый из основной программы _RUN.EXE вполне родной, не содержит 32-битных вызовов.


------------------
"Veni, vidi, vici!"(с)




Исправлено 2 раз(а). Последнее : sphinx, 05.06.23 16:43
Ratings: 0 negative/0 positive
Re: Запуск 32-битного приложения из FPD 2.6
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
sphinx
akvvohinc
1) Приведи код того PRG, который "идеально работает"

_run.prg
RUN CMD /C start.bat

akvvohinc
3) Текст файла start.bat
Выше приводил.
start.bat:
Run cmd /c \\server\share\my.exe && это собранный уже в VFP 9.0, а значит 32-битное приложение.

akvvohinc
А что означает Run cmd /c в bat-файле?
Запуск внешней программы осуществляется через командный процессор CMD.EXE
RUN - это команда Фокса.
Я не знаю команды RUN, которую можно выполнять в bat-файле.

Цитата:
Напрямую, боюсь не запустить 32-битное приложение из 16-битного (DOS)
Я не боялся запускать VFP из-под FPD - наверно поэтому у меня проблем и не было.
Из Help:
Цитата:
To use RUN, Command.com or Cmd.exe must be located where the COMSPEC environment variable can find it.
Что это может означать, как ты думаешь?

Сейчас залез в свои старые программы (для FPD 2.6).
Вот как у меня вызывалась некая VFP программа из-под Foxpro for DOS:
m.vfp_exe = 'vfp_gexa.exe'
RUN &vfp_exe -c&vfp_path.config.fpw &parm

Как видишь, никаких bat-файлов здесь нет - просто RUN.



Исправлено 6 раз(а). Последнее : akvvohinc, 05.06.23 17:30
Ratings: 0 negative/0 positive
Re: Запуск 32-битного приложения из FPD 2.6
Каратаев

Сообщений: 3977
Откуда: Алматы
Дата регистрации: 04.12.2001
ssa
В FPD? Ну-ну...
А, блин, точно! :doom:


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.
Ratings: 0 negative/0 positive
Re: Запуск 32-битного приложения из FPD 2.6
andrewk

Сообщений: 174
Откуда: Красноярск
Дата регистрации: 15.05.2005
sphinx
start.bat:
Run cmd /c \\server\share\my.exe
Если это текст именно bat-файла, то... Слово "RUN" не является встроенной командой command.com или cmd.exe – как встроенная команда "DIR". Нет и "внешней" команды, как "xcopy.exe". Думаю, на этот "RUN" и пишет "неверная команда". Почему из IDE не ругается, можно только гадать, наверняка приведены не все исходные данные.

Как бы то ни было, в bat-нике никакой run не нужен. Да и cmd/c в данном случае скорее всего не нужен. Например, вполне работает такая команда в FPD: !calc.exe

Но вообще, чтобы чего путнего посоветовать, хорошо бы знать, а что и для чего запускаем-то:
1. Запускаемое – это GUI-приложение или консольное?
2. Нужно ли ждать его завершение?
3. Нужно ли из него что-то возвращать в FPD-прогу (через ErrorLevel, или консольный вывод, или через файлы)?
4. Нужен универсальный запускальщик, который умеет обрабатывать вышеперечисленные случаи, в том числе и bat-файлы, или нужно решить разовый вопрос для конкретного exe-шника?
5. Нужно ли выполнять bat-ники под x64? Например, я использую vDosPlus, а там 4DOS и синтаксис несколько отличается от CMD.

Вот комменты и пара строк из моего запускальщика:
* Пишем команду в BAT-файл в случаях:
* нужен ErrorLevel
* длинную строку тупо не запустит либо напишет "программа не помещается в памяти" (129 - эмпирически)
* dir>nul почему-то не прячет
rocCmd = "cmd/d/e:on/c" && катит без пробела между /C и командой
* ... собираем команду, запоминаем экраны, ещё чего-то... Сам вызов:
!&rocCmd
* ... восстанавливаем экран, получаем результат (если нужен) ...
Ratings: 0 negative/0 positive
Re: Запуск 32-битного приложения из FPD 2.6
sphinx
Автор

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Я описАлся - не RUN в батнике, а START.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Запуск 32-битного приложения из FPD 2.6
sphinx
Автор

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Консольное, ждать не надо, возвращать не надо.

Как советовал Сергей - просто
RUN my.exe - не проходит.


Ещё раз. Сам ЕХЕ, собранный в FPD 2.6 (у него пара строк внутри - настройки и запуск/(run) start.bat. И сам по себе он отлично вызывает bat- файл с правильными командами.

Вопрос. Как запустить ЕХЕ из основной программы, если варианты
1) Run my.exe
2) run cmd /c my.exe


выдают ошибку "Неверная команда или имя файла"?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Запуск 32-битного приложения из FPD 2.6
sphinx
Автор

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Разобрался.
Для запуска ЕХЕ пишем:

RUN "путь\имя_файла.ехе".

А я хотел победить придуманную проблему.

Сергею спасибо, с иронией, но пнул в нужное направление.

:five:


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 23 alex; Guest (Гостей: 21)

© 2000-2024 Fox Club 
Яндекс.Метрика