Вопрос: ПРоблема с кодом из-за неопытности | Добавлено: 05.09.08 10:37 |
Автор вопроса: ![]() |
Здравствуйте.
У меня такая проблема. Мне нужно сделать диск, но я не могу написать программу autorun, которая открывала бы файлы на самом диске. листинг. Shell ("cmd /X /C start E:\disk\files\htmlsite\index.html") _ В чем моя ошибка? Уважаемые программисты, подскажите правильный код. Мне нужно открывать html chm и pdf файлы. Заранее спасибо. |
Ответы | Всего ответов: 29 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 363 |
Профиль | Цитата | #1 | Добавлено: 05.09.08 11:18 |
Shell "C:\Program Files\Internet Explorer\iexplore.exe E:\book\html\index.htm", vbMaximizedFocus
Сам разберешся или разжевать? ![]() |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 326066673 Вопросов: 368 Ответов: 5968 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 05.09.08 15:45 |
Бррр... А если CD-привод юзает не E:, а другую букву? А если IE стоит не в C:\Program files?
|
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 5 |
Профиль | Цитата | #3 | Добавлено: 05.09.08 19:05 |
Спасибо за помощь. Но сама проблема в том, чтобы эта программа выполнялась на любом компьютере независимо от буквы диска
Shell ("cmd /X /C start C:\disk\files\htmlsite\index.html" ![]() Этот код пашет нормально на моем компьютере, а на других не хочет типа не найден сетевой ресурс. Я подумал, что можно задать относительный адрес. Т.е. относительно расположения файла программы, и уже от нее "скакать". Есть ли какие варианты. Я думаю, что код должен быть простым. Ведь пираты каждный день штампуют по сотне дисков с разными менюшками, а я вторую неделю литературу рою! HELP! или F1!!! |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 363 |
Профиль | Цитата | #4 | Добавлено: 05.09.08 19:45 |
>Павел
Глупый вопрос ![]() ![]() Я подумал, что можно задать относительный адрес App.Path указывает на рабочую папку в которой находится запущенная програ.
|
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 5 |
Профиль | Цитата | #5 | Добавлено: 05.09.08 20:09 |
А куда app.path вписывать?Можно поподробнее, А то я полный дилетант.Заранее благодарен. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 363 |
Профиль | Цитата | #6 | Добавлено: 05.09.08 20:46 |
Если запускаемый файл в папке с программой то:
Shell app.path & "\fileName.exe" если например твоя программа в папке "C:\Temp\" , а тебе нужно запустить программу из "C:\SoFakingWorld\People\": Shell app.path & "\..\SoFakingWorld\People\fileName.exe" |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 363 |
Профиль | Цитата | #7 | Добавлено: 05.09.08 21:11 |
Админы! Поместите этот пример запуска файлов в ФАКу, плиззз.
Option Explicit
Private Declare Function ShellExecuteEx Lib "shell32" (lpExecInfo As SHELLEXECUTEINFO) As Long Private 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 Const SW_NORMAL = 1 'Другие флаги открытия Const SW_ERASE = &H4 Const SW_HIDE = 0 Const SW_INVALIDATE = &H2 Const SW_MAX = 10 Const SW_MINIMIZE = 6 Const SW_MAXIMIZE = 3 Const SW_OTHERUNZOOM = 4 Const SW_OTHERZOOM = 2 Const SW_PARENTCLOSING = 1 Const SW_PARENTOPENING = 3 Const SW_RESTORE = 9 Const SW_SCROLLCHILDREN = &H1 Const SW_SHOW = 5 Const SW_SHOWDEFAULT = 10 Const SW_SHOWMAXIMIZED = 3 Const SW_SHOWMINIMIZED = 2 Const SW_SHOWMINNOACTIVE = 7 Const SW_SHOWNA = 8 Const SW_SHOWNOACTIVATE = 4 Const SW_SHOWNORMAL = 1 Private Type SHELLEXECUTEINFO cbSize As Long 'размер структуры fMask As Long 'ìмаска параметров 'SEE_MASK_NOCLOSEPROCESS 'SEE_MASK_CLASSKEY Параметры указываются hkeyClass. 'SEE_MASK_CLASSNAME Параметры указываются lpClass . 'SEE_MASK_CONNECTNETDRV Параметры указываются LpFile, для сетевого запуска 'SEE_MASK_DOENVSUBST Разворачивают любые переменные среды указанные в lpFile или lpDirectory. 'SEE_MASK_FLAG_DDEWAIT Wait for the DDE conversation to terminate before returning, if the ShellExecuteEx function causes a DDE conversation to start. 'SEE_MASK_FLAG_NO_UI Не отображает сообщения об ошибках если они есть 'SEE_MASK_HOTKEY Использование комбинации "hot key", указанные в dwHotKey. 'SEE_MASK_ICON Использование иконки указанную в hIcon. 'SEE_MASK_IDLIST Используют список идентификаторов элемента, указанные в lpIDList. 'SEE_MASK_INVOKEIDLIST Используют список идентификаторов элемента, указанные в lpIDList, чтобы вызвать приложение. Если этот член нулевой то функция сама создаст список идентификаторов. SEE_MASK_INVOKEIDLIST отменяет SEE_MASK_IDLIST. 'SEE_MASK_NOCLOSEPROCESS Просто запускает процесс указанный в HProcess (хэндл). hwnd As Long 'хэндл родительского окна lpVerb As String 'указание что сделать с файлом по умолчанию "Open" lpFile As String 'путь к файлу lpParameters As String 'Указатель на строку с нулевым символом на конце содержащую прикладные параметры lpDirectory As String 'Указатель на строку с нулевым символом на конце содержащую путь к рабочему каталогу, если указатель пуст, то текущая папка используется как рабочая. nShow As Long 'Флаг показа, одно из значений SW_ hInstApp As Long 'Handle to the instance of the application that was started or an error value if the application could not be started. (This handle could also be the handle of a dynamic data exchange [ ![]() ' Optional fields lpIDList As Long lpClass As String hkeyClass As Long dwHotKey As Long hIcon As Long hProcess As Long End Type Private Sub Command1_Click() cmd1.ShowOpen 'Выбираем объект для запуска Dim t As Byte t = 0'указываем способ запуска Select Case t Case 0 'Используется ShellExecuteEx Dim w As SHELLEXECUTEINFO Dim hhh As Long, h1 As Long, retval As Long w.cbSize = Len(w) w.lpVerb = "open" w.nShow = SW_NORMAL w.hInstApp = hhh w.hProcess = h1 w.hwnd = Me.hwnd w.lpDirectory = sPath(cmd1.FileName) w.lpFile = cmd1.FileName retval = ShellExecuteEx(w) Case 1 'Используется ShellExecute ShellExecute Me.hwnd, "open", cmd1.FileName, 0, 0, SW_NORMAL Case Else 'Используется Shell Shell cmd1.FileName ' End Select End Sub 'Получение рабочего каталога Function sPath(ByVal sP As String) Dim s As String s = Dir(sP) s = Replace(sP, s, "" ![]() sPath = s End Function |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 363 |
Профиль | Цитата | #8 | Добавлено: 05.09.08 21:12 |
Если кто знает еще способы напишите ![]() |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 5 |
Профиль | Цитата | #9 | Добавлено: 09.09.08 00:13 |
Сидел, Сидел, но ни х чего не понял.
Во первых, для чего там куча переменных? Во вторых, для чего Select case t? Прошу, умоляю. в какую строку вписать имя файла и папки. Я хочу разобраться, чтобы вас, s12, не тревожить по каждому файлу, а четко понять что и куда писать. Привожу также структуру папок, которые может будут на диске. Будь он не ладен. Уже на работе требуют образцы. cd-rom autorun.exe - именно сама программа,которую пишу \files\htmlsite\index.html \files\chmsite\site.chm \files\katalog\katalog.pdf Вот эти файлы нужно открыть по нажатии разных кнопок. Вы объясните на примере html, а дальше я разберусь. Надеюсь. Жду помощи. Заранее спасибо |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 2795 |
Web-сайт: Профиль | Цитата | #10 | Добавлено: 09.09.08 19:07 |
запускай файлы так:
ShellExecute Form1.hwnd, "open", FILENAME, 0, 0, 1 Насчет относительных путей: app.path содержит путь к твоей программе |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 363 |
Профиль | Цитата | #11 | Добавлено: 10.09.08 08:39 |
Во первых, для чего там куча переменных? Я знаю три способа запуска внешней программы из вб6, 2 с помощью апи и Shell. В примере приведены все три способа (все способы отделены case ), каждый из способов хорош для какой-либо конкретной ситуации. В твоем случае подойдет способ указанный Winand'ом.
Вот эти файлы нужно открыть по нажатии разных кнопок.
Счас набросаю примерчик, но лучше бы видеть мыло, чтобы кинуть туда весь проект.
Вы объясните на примере html, а дальше я разберусь. Надеюсь. Жду помощи. |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 363 |
Профиль | Цитата | #12 | Добавлено: 10.09.08 08:54 |
Добавь на форму три кнопки и вот это:
|
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 233286456 Вопросов: 34 Ответов: 5445 |
Web-сайт: Профиль | Цитата | #13 | Добавлено: 10.09.08 10:20 |
будем проще, наф огороды ![]() [AutoRun]
ShellExecute=1.htm Icon=autorun.ico |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 363 |
Профиль | Цитата | #14 | Добавлено: 10.09.08 10:27 |
+1
Фсе гиниальнаё праста! |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 5 |
Профиль | Цитата | #15 | Добавлено: 11.09.08 22:10 |
Большое спасибо. Наконец я написал эту чертову программу и на ковер меня не поставили, а наоборот - остались очень довольны. Спасибо вам.
А какую литературу вы мне предложите почитать или скачать про VB? |
|