Страница: 1 | 2 |
Вопрос: Альтернатива Shell
Добавлено: 28.11.06 15:49
Автор вопроса: Makes
При использовании команды Shell из программы 1 для запуска програмы 2 программа 2 запускается как дочерний процесс и закрывается при закрытии программы 1.
Сам вопрос: Как запустить программу 2 из программы 1, чтобы при закрытии программы 1, программа 2 оставалась работать?
Ответы
Всего ответов: 17
Номер ответа: 1
Автор ответа:
GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #1
Добавлено: 28.11.06 16:30
У меня получилось так:
Номер ответа: 2
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #2
Добавлено: 28.11.06 18:58
Запускает, но генерирует ошибку в моей проге. Если прогу запускаю сам, то все путем, если это делает bat файл со строкой
то вылезает ошибка bad file name or number. Тоже самое и из приложения с указанным выше кодом.
Причем с блокнотом все проходит нормально, а с моей прогой ошибка. Еще раз подчеркиваю, что если запускать мою прогу вручную, то все путем.
Номер ответа: 3
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #3
Добавлено: 28.11.06 20:25
Номер ответа: 4
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #4
Добавлено: 28.11.06 20:49
Нет. У меня Process Explorer все видит и копий точно нет.
Номер ответа: 5
Автор ответа:
GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #5
Добавлено: 28.11.06 21:11
А в пути до exe-файла проги есть пробелы?
Номер ответа: 6
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #6
Добавлено: 29.11.06 09:11
Нет. Прога в System32.
Номер ответа: 7
Автор ответа:
GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #7
Добавлено: 29.11.06 09:53
cmd /C C:\WINDOWS\system32\notepad.exe
то вылезает ошибка bad file name or number.
Вообще-то, довольно подозрительно то, что программа запускается, но в ней генерируется какая-то ошибка, как здесь сказано... Может проблема решится, если перед запуском shell сделать ChDir на каталог, который указан, как "рабочий" для Вашей программы. (Я не знаю, о какой программе идет речь на самом деле и как именно Вы запускаете ее "вручную", поэтому просто пытаюсь гадать.) Я имею в виду, что для обычных Windows программ, если они обычно запускаются кликом на ярлык, то в настройках ярлыка есть указание не только пути до файла программы, но и "Рабочий каталог", который устанавливается текущим для сеанса работы этой программы. Очевидно наш shell такое переключение на рабочий каталог не делает, а запускает прогу так, что для нее рабочим является текущий каталог сеанса работы вызывающей программы. Может быть именно поэтому и bad file name, т.к. в текущем каталоге нет тех файлов, которые есть в рабочем каталоге вызываемой программы и которые должные открываться при ее вызове.
Номер ответа: 8
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #8
Добавлено: 29.11.06 10:10
Прога написана мной и я знаю, что она автономна - она не требует подгрузки каких-то модулей. Никаких файлов для ее работы из моего рабочего каталога не требуется.
Я опишу поподробней. Прога лежит в System32.
Кликаю по ней и она очень хорошо запускается и нормально работает. Далее убиваю ее.
Запускаю bat файл со строкой (он лежит на рабочем столе)
Вылезает ошибка bad file name o number.
В чем тут дело ума не приложу.
Номер ответа: 9
Автор ответа:
GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #9
Добавлено: 29.11.06 10:31
Что происходит, если в bat файле есть одна такая строка?:
C:\WINDOWS\system32\proga.exe
И что происходит, если в bat файле стоит такая строка?:
cmd /K C:\WINDOWS\system32\proga.exe
(кстати, уже все выглядит так, что проблема не с shell, а именно с вызовом Вашей программой. Так что может быть нужно обращаться с вопросом не на форум VBA, а куда-нибудь в OS Windows или по компиляторам.)
Номер ответа: 10
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #10
Добавлено: 29.11.06 10:34
Напиши ватник примерно так.
c:
cd windows
cd system32
proga.exe
Как тебе уже в общем то говорили.
Номер ответа: 11
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #11
Добавлено: 29.11.06 10:45
C:\WINDOWS\system32\proga.exe
И что происходит, если в bat файле стоит такая строка?:
cmd /K C:\WINDOWS\system32\proga.exe
И в первом и во втором случае ситуация одна и та же - bad file name or number
c:
cd windows
cd system32
proga.exe
И здесь то же самое.
Да проблема действительно в проге, а не в шелле.
Может быть все-таки кто-то знает.
Номер ответа: 12
Автор ответа:
GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #12
Добавлено: 29.11.06 12:28
Мне кажется, что у меня остался самый последний вопрос. Если будет безрезультатно, то больше идей не будет, и Вам придется искать решение в самой Вашей проге.
Касательно успешного запуска. Как именно происходит успешный запуск? Кликом на ярлыке? Кликом на имени самого exe-файла? В любом случае, нужно смотреть параметры запуска, которые доступны по <Alt+Enter>. Может быть установлены параметры совместимости (я не уверен, но может быть они тоже как-нибудь пропускаются по shell и в коммандном режиме). Нет ли в каталоге system32 еще каких-нибудь файлов, которые может быть появились сами и могут относиться к proga.exe, например: proga.ini, proga.inf, proga.lnk и т.п.?
Номер ответа: 13
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #13
Добавлено: 29.11.06 13:28
Ну про *.lnk ты загнул, а вот то что твоя прога может использовать какой то файл (читать или пытаться писать) это вполне возможно. Кстати что прога то делает, куда то телепаты подевались.
Номер ответа: 14
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #14
Добавлено: 29.11.06 13:28
Спасибо за столь обстоятельное обсуждение.
Успешный запуск происходит в случаях:
1) При клике на самой проге в system32.
2) При клике на Ярлыке (Ярлык на рабочем столе был создан перетаскиванием иконки проги с удерживанием Shift+Ctrl - обычный ярлык)
3) При клике на том же ярлыке, при том, что я удалил строку в ярлыке "Рабочая папка". Т.е. в ярлыке остался только путь к моей проге.
Никаких посторонних прог нет.
Номер ответа: 15
Автор ответа:
GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #15
Добавлено: 29.11.06 13:58
Ну, если (это уж самое самое последнее) Вы уверены, что в указываемом Вами пути и имени программы при ее вызове по shell и в bat не затесалась какая-нибудь буква кириллицы, единтичная по написанию с латинской буквой, то...
- определенно ищите проблему в самой Вашей программе (если она не открывает/не читает файлы, то может быть она обращается к устройствам или другим программам/процессам, номеров/адресов которых не может обнаружить по каким-то причинам, неведомым мне лично)
- попробуйте скопировать Вашу программу в другой каталог и посмотрите, запустится ли она оттуда (судя по тому, что Вы о ней говорите, то она должна работать из любого места)
- ну, и (чем чёрт не шутит!), стоит попробовать прописать параметр PATH в AUTOEXEC или CONFIG.
На этом я завязываю писать в этой теме.