Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

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

 

  Вопрос: Альтернатива Shell Добавлено: 28.11.06 15:49  

Автор вопроса:  Makes
При использовании команды Shell из программы 1 для запуска програмы 2 программа 2 запускается как дочерний процесс и закрывается при закрытии программы 1.

Сам вопрос: Как запустить программу 2 из программы 1, чтобы при закрытии программы 1, программа 2 оставалась работать?

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #1
Добавлено: 28.11.06 16:30
У меня получилось так:

n = Shell("cmd /C C:\WINDOWS\system32\notepad.exe", vbHide)

Ответить

Номер ответа: 2
Автор ответа:
 Makes



Вопросов: 8
Ответов: 36
 Профиль | | #2 Добавлено: 28.11.06 18:58
Запускает, но генерирует ошибку в моей проге. Если прогу запускаю сам, то все путем, если это делает bat файл со строкой
cmd /C C:\WINDOWS\system32\notepad.exe

то вылезает ошибка bad file name or number. Тоже самое и из приложения с указанным выше кодом.
Причем с блокнотом все проходит нормально, а с моей прогой ошибка. Еще раз подчеркиваю, что если запускать мою прогу вручную, то все путем.

Ответить

Номер ответа: 3
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #3
Добавлено: 28.11.06 20:25
то вылезает ошибка bad file name or number.
Может у тебя несколько прог с одним и тем же именем?

Ответить

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



Вопросов: 8
Ответов: 36
 Профиль | | #4 Добавлено: 28.11.06 20:49
Может у тебя несколько прог с одним и тем же именем?

Нет. У меня Process Explorer все видит и копий точно нет.

Ответить

Номер ответа: 5
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #5
Добавлено: 28.11.06 21:11
А в пути до exe-файла проги есть пробелы?

Ответить

Номер ответа: 6
Автор ответа:
 Makes



Вопросов: 8
Ответов: 36
 Профиль | | #6 Добавлено: 29.11.06 09:11
А в пути до exe-файла проги есть пробелы?

Нет. Прога в System32.

Ответить

Номер ответа: 7
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #7
Добавлено: 29.11.06 09:53
Запускает, но генерирует ошибку в моей проге. Если прогу запускаю сам, то все путем, если это делает bat файл со строкой
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 файл со строкой (он лежит на рабочем столе)
cmd /C C:\WINDOWS\system32\proga.exe

Вылезает ошибка bad file name o number.
В чем тут дело ума не приложу.

Ответить

Номер ответа: 9
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #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
Что происходит, если в bat файле есть одна такая строка?:

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-сайт: www.genyaa.nm.ru
 Профиль | | #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-сайт: www.genyaa.nm.ru
 Профиль | | #15
Добавлено: 29.11.06 13:58
Ну, если (это уж самое самое последнее) Вы уверены, что в указываемом Вами пути и имени программы при ее вызове по shell и в bat не затесалась какая-нибудь буква кириллицы, единтичная по написанию с латинской буквой, то...
- определенно ищите проблему в самой Вашей программе (если она не открывает/не читает файлы, то может быть она обращается к устройствам или другим программам/процессам, номеров/адресов которых не может обнаружить по каким-то причинам, неведомым мне лично)
- попробуйте скопировать Вашу программу в другой каталог и посмотрите, запустится ли она оттуда (судя по тому, что Вы о ней говорите, то она должна работать из любого места)
- ну, и (чем чёрт не шутит!), стоит попробовать прописать параметр PATH в AUTOEXEC или CONFIG.

На этом я завязываю писать в этой теме.

Ответить

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

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



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