Консультация № 25547
30.08.2005, 15:36
0.00 руб.
0 5 2
У меня на форме есть DriveListBox, DirListBox, FileListBox и кнопка, как сделать чтобы при нажатии на кнопку открывался файл выбранный в FileListBox?

Обсуждение

Неизвестный
30.08.2005, 16:17
общий
это ответ
Здравствуйте, Dushin Igor!
Если просто в FileListBox, то так:
Private Sub Command1_Click()
Shell File1.FileName
End Sub

Private Sub Form_Load()
File1.Path = "c:\Win98"
End Sub
Если с учетом DriveListBox и DirListBox, то примерно так:
Private Sub Command1_Click()
Dim MyPath As String, i As Integer

If File1.FileName <> "" Then
For i = Len(Dir1.Path) To 1 Step -1
If Mid(Dir1.Path, i, 1) = "" Then
MyPath = Dir1.Path + File1.FileName
Else
MyPath = Dir1.Path + "" + File1.FileName
End If
Exit For
Next i
Shell MyPath
End If
End Sub

Private Sub Dir1_LostFocus()
Dir1.Path = Dir1.List(Dir1.ListIndex)
End Sub

Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Private Sub Drive1_Change()
On Error GoTo DriveHandler

Dir1.Path = Drive1.Drive
Exit Sub
DriveHandler:
Drive1.Drive = Dir1.Path
Exit Sub
End Sub

Private Sub Form_Load()
File1.Pattern = "*.exe"
Dir1.Path = "c:"
Dir1.Path = Drive1.Drive
File1.Path = "c:\Win98"
End Sub

Творческих успехов!
давно
Профессионал
848
1596
30.08.2005, 16:34
общий
это ответ
Здравствуйте, Dushin Igor!
Добвалю, что предыдущий ответ подходит только для исполняемых файлов. Предлагаю пример для открытия файлов любых типов. Файл открывается программой, которая связана с данным расширением в ОС. Добавьте кнопку на форму и код из приложения.

Приложение:
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 LongPrivate Const SW_SHOWMAXIMIZED = 3Private Sub Command1_Click()Dim sPath As StringsPath = "C:\mydocs\test.doc"Call ShellExecute(0, "open", sPath, "", "", SW_SHOWMAXIMIZED)End Sub
Неизвестный
31.08.2005, 06:31
общий
Первый код не только для исполняемых файлов. Если заранее известна программа открытия файла, то можно привести его к такому виду, например: SHELL "Winhlp32.exe MyHelp.hlp"Единственное, что нельзя сделать - это открыть заранее неизвестный неисполняемый файл ассоциированной прогой винды.
давно
Профессионал
848
1596
31.08.2005, 08:37
общий
RE>>Первый код не только для исполняемых файлов.RE>>SHELL "Winhlp32.exe MyHelp.hlp"Ну по сути дела Вы всё равно запускаете Winhlp32.exe :-))) Другой вопрос, что вы можете передать параметр и открыть нужный файл. Кстати, на заметку, если файл test.exe переименовать в test.doc, например, и запустить его SHELL "test.doc", то всё равно запустится исполняемый файл. Это еще раз говорит, что функция Shell запускает приложения основываясь на структуру файла, а не на его расширение.
Неизвестный
31.08.2005, 08:46
общий
Ну, в общем-то, я этого и не отрицал:) Просто уточнил...
Форма ответа