Страница: 1 | 2 |
|
Вопрос: ПРоблема с кодом из-за неопытности
|
Добавлено: 05.09.08 10:37
|
|
Автор вопроса: maximius
|
Здравствуйте.
У меня такая проблема. Мне нужно сделать диск, но я не могу написать программу autorun, которая открывала бы файлы на самом диске.
листинг.
Shell ("cmd /X /C start E:\disk\files\htmlsite\index.html") _
В чем моя ошибка? Уважаемые программисты, подскажите правильный код. Мне нужно открывать html chm и pdf файлы. Заранее спасибо.
Ответить
|
Номер ответа: 7 Автор ответа: s12
Вопросов: 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 [DE] server application.) This member is set on return.
' 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
Ответить
|
Номер ответа: 9 Автор ответа: maximius
Вопросов: 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, а дальше я разберусь. Надеюсь.
Жду помощи.
Заранее спасибо
Ответить
|
Номер ответа: 12 Автор ответа: s12
Вопросов: 24 Ответов: 363
|
Профиль | | #12
|
Добавлено: 10.09.08 08:54
|
Добавь на форму три кнопки и вот это:
- Option Explicit
- 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_MAXIMIZE = 3
-
- Private Sub Command1_Click()
- ShellExecute Me.hwnd, "open", App.Path & "\files\htmlsite\index.html", 0, 0, SW_MAXIMIZE
- End Sub
-
- Private Sub Command2_Click()
- ShellExecute Me.hwnd, "open", App.Path & "\files\katalog\katalog.pdf", 0, 0, SW_MAXIMIZE
- End Sub
-
- Private Sub Command3_Click()
- ShellExecute Me.hwnd, "open", App.Path & "\files\chmsite\site.chm", 0, 0, SW_MAXIMIZE
- End Sub
Ответить
|
Страница: 1 | 2 |
Поиск по форуму