Проблема с Shell

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Проблема с Shell

Сообщение Calvin » 23.06.2003 (Пн) 12:50

Люди добрые, подскажите пож-та......
Я тут застопорился на функции Shell. Мне нужно просто открыть avi-ный файл, но прога ругается. У меня на домашнем компе говорит, что файл не найден, а на рабочем Invalid procedure call or argument
Код: Выделить всё
е = Shell("D:\Мои документы\Video\EQUILIBRIUM.AVI", vbMaximizedFocus)

когда хочу запустить какой нибудь "броузер", то нормально
Код: Выделить всё
Shell "notepad.exe", vbMaximizedFocus

может у меня с синтаксисом проблемы или с головой? :roll:
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 23.06.2003 (Пн) 13:57

ShellExecute
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 23.06.2003 (Пн) 14:12

C головой и глазами...
Инструкция Shell работает только с исполняемыми программами. Avi мало на него похож. Чтобы запустить AVI используют прочие программы или ShellExecute...
Не так страшен русский танк, как его пьяный экипаж

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 23.06.2003 (Пн) 14:43

2Urvin
А что ты понимаешь под исполняемыми программами?

ЗЫ (а ты нескромный :wink: )
ЗЫ2 ShellExecute имеет такие же аргументы как Shell ?
ЗЫ3 Блин, прога ругается. говорит, что такой функции нет............(((


Спасибо, Cyrax, я совсем забыл, что это API-ная функция, щас посмотрю.........
Последний раз редактировалось Calvin 23.06.2003 (Пн) 15:02, всего редактировалось 2 раз(а).
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 23.06.2003 (Пн) 14:48

под исполняемыми программами всегда понималось *.com и *.exe
Ничто так не ограничивает полёт мысли программиста, как компилятор

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 23.06.2003 (Пн) 14:54

Calvin писал(а):ЗЫ3 Блин, прога ругается. говорит, что такой функции нет............(((

дык ее объявлять надо
Код: Выделить всё
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
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 24.06.2003 (Вт) 12:08

Calvin
В Shell нельзя использовать имен с пробелами поэтому надо или так:
Shell("D:\Мои~1\Video\EQUILIBRIUM.AVI", vbMaximizedFocus)

или открыть директорию, забыл каким оператором, и в Shell только имя запускаемого файла.

не знаю вообще, запустится ли EQUILIBRIUM.AVI, насколько я знаю, Shell для Com Exe bat файлов, хотя, возможно эти данные устарели.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 25.06.2003 (Ср) 11:20

Shell "START c:\MYAVI.AVI"
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 25.06.2003 (Ср) 11:33

Start так просто не работает в NT-системах, а вот
Код: Выделить всё
Shell "rundll32.exe url.dll,FileProtocolHandler C:\MyAvi.Avi"
- всегда!
Не так страшен русский танк, как его пьяный экипаж

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 27.06.2003 (Пт) 10:15

Спасибо всем за советы. Но единственное, что не понятно, так это синтаксис Sheel в некоторых вышеперечисленных примерах (даже если они не сработали :wink: ) вот допустим Shell "START c:\MYAVI.AVI" и в тех, что работают Shell "rundll32.exe url.dll,FileProtocolHandler C:\MyAvi.Avi". Я вот по хэлпам покапался и нашел лишь такой синтаксис Shell(pathname[,windowstyle]). Объясните пож-та.

ЗЫ
В Shell нельзя использовать имен с пробелами поэтому надо или так:

Vitaly1 оно и с пробелами работает, хотя я так же как и ты подумал.......
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 27.06.2003 (Пт) 10:48

Shell(PathName[, windowstyle])
pathname - содержит имя исполняемого файла с возможным указанием привода и пути. Если расширение не указано, добавляется расширение ЕХЕ.
windowStyle - определяет состояние окна, в котором запускается программа. Если этот аргумент не указан, принимается значение 2.

vbMaximizedFocus 3 Развернутое активное
vbNormalFocus 1 Активное обычного размера
vbNormalNoFocus 4 Неактивное обычное
vbMinimizedFocus 2 Активное свернутое
vbMinimizedNoFocus 6 Неактивное свернутое
vbHide 0 Скрытое активное
Не так страшен русский танк, как его пьяный экипаж

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 27.06.2003 (Пт) 11:51

Ну ето все понятно :) , но меня интересует первый аргумент, так называемый "привод". Я и спрашиваю, почему в некоторых случаях он Start а в других - rundll32.exe url.dll,FileProtocolHandler
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 27.06.2003 (Пт) 12:37

:arrow: Start.exe - программа, которая может запустить все что хочешь. Написана под дос, в NT системах работает либо криво, либо не встречается.
:arrow: rundll32.exe программа, запускающая библиотеки как программы. Писана под WIN32.

:!: Вся остальная бурда - это параметры уже самих программ. Так, для Start необходимо лишь указать адрес файла. В rundll немного сложнее - там вызывается библиотека, ее тип, и параметр уже библиотеки - адрес файла.
Вот так неутешительно...
Не так страшен русский танк, как его пьяный экипаж

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 27.06.2003 (Пт) 12:42

В принципе, еще должен указываться полный адрес этих программ, но засчет стандарной папки системы, мы его не указываем.
C:\Windows\System32\rundll32.exe url.dll,FileProtocolHandler C:\MyAvi.Avi".
Не так страшен русский танк, как его пьяный экипаж

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 27.06.2003 (Пт) 13:03

Vitaly1
В Shell нельзя использовать имен с пробелами поэтому надо или так:

Calvin
Vitaly1 оно и с пробелами работает, хотя я так же как и ты подумал.......


У меня не работало в том случаи, когда я в дополнительных параметрах добавлял путь подключаемого файла с пробелами. Удивительно, ведь Shell воспринимает пробел как разделитель, вероятно, только тогда, когда уже прочлось имя запускаемого файла.

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 27.06.2003 (Пт) 13:59

Vitaly1 писал(а):Vitaly1
Удивительно, ведь Shell воспринимает пробел как разделитель, вероятно, только тогда, когда уже прочлось имя запускаемого файла.

Shellу все равно, какие параметры, это программа, которую ты вызывал, определяет пробел как разделитель!
Не так страшен русский танк, как его пьяный экипаж

Demonx
Бывалый
Бывалый
 
Сообщения: 237
Зарегистрирован: 25.06.2003 (Ср) 0:08
Откуда: Литва/Висагинас

Сообщение Demonx » 27.06.2003 (Пт) 22:08

Уменя есть два способа (Фильм нах. "C:\lol\film.avi"):

1)
Код: Выделить всё
chdrive("C:")
chdir("\lol\")
shell("film.avi", vbNormalFocus)

2)
Код: Выделить всё
shell("explorer C:\lol\film.avi", vbNormalFocus)

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 28.06.2003 (Сб) 2:00

Уменя есть два способа (Фильм нах. "C:\lol\film.avi"):

Фильм нах.... :D
Так держать!
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 6

    TopList