Я в некотором роде заблудился в деталях вашего требования, но в целом для запуска файла из VB6 вы можете использовать ShellExecute
и связанные с ним функции API.
Я не уверен, где лучший справочник для этого, но я полагаю, вы можете начать здесь .
Edit:
Ты рядом. Изменить это:
Private Sub smb3_Click()
ShellExecute hWnd, "find", "C:\hi\my.file", vbNullString, vbNullString, SW_SHOWNORMAL
End Sub
к этому:
Private Sub smb3_Click()
ShellExecute hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, SW_SHOWNORMAL
End Sub
Обратите внимание, что я изменил:
Второй аргумент ShellExecute должен быть «открытым», чтобы открыть указанный файл с помощью программы на вашем компьютере, связанной с расширением файла, который вы пытаетесь открыть (третий аргумент функции). Проверьте ссылку, которую я включил.
Что приводит к чему-то еще, что вам нужно проверить на вашем компьютере (и на машинах, на которых вы будете использовать свою программу). Расширение файла .file должно быть связано с любой программой, которую вы хотите запустить с вашей программой.
Редактировать (9 сентября)
Хорошо, давайте посмотрим, получим ли мы работу упрощенной реализации ShellExecute
.
Создайте новый проект VB6 (Standard EXE) и добавьте в форму Form1 одну кнопку с именем smb1.
Перейдите в форму просмотра кода, скопируйте и вставьте этот код (и только этот код):
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
Private Sub smb3_Click()
Debug.Print ShellExecute(hWnd, "open", "C:\hi\my.txt", vbNullString, vbNullString, 1)
End Sub
Убедитесь, что в папке "c: \ hi" есть текстовый файл my.txt.
Запустите программу и нажмите кнопку. Он должен открыть текстовый файл с помощью программы для редактирования текстовых файлов по умолчанию, которую вы настроили на своем компьютере (например, «Блокнот»).
Если это не скажите, пожалуйста, какую ошибку вы получаете и в какой строке происходит ошибка. Кроме того, проверьте Немедленное Окно. Я полагаю, что немедленное окно будет видно, как только вы запустите свою программу, и останется видимым, пока ваша программа работает. Если ваш код достигает и проходит через строку с ShellExecute
, в Immediate Window отобразится код, возвращенный вызовом этой функции. Это многое расскажет нам о вашей проблеме.
Если код работает, мы можем подумать о том, чтобы изменить программу для работы с файлом, над которым он должен работать - над "C: \ hi \ my.file".
Но сначала, что произойдет, если дважды щелкнуть файл в проводнике Windows? Если файл открывается, то мы знаем, что есть программа, с которой ваша система связана с файлами с расширением .file. Если файл не открывается, вам нужно связать программу с расширением .file. Проверьте справку Windows для получения дополнительной информации. После того, как мы настроены, в вашей тестовой программе измените код в вашем событии smb3 Click на:
Debug.Print ShellExecute(hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, 1)
Запустите это и нажмите на программу. Файл должен открыться. Если нет, скажите мне, какую ошибку вы получили и где, и скажите мне, что (если что-нибудь) в Немедленном окне.
Если программа действительно открывается, то у вас есть событие нажатия кнопки и ваше объявление ShellExecute
код, необходимый для программного открытия файлов. Но есть еще изменения, которые вы должны внести, и изменения, которые вы должны внести.
Изменение, которое вы должны сделать, находится в событии нажатия кнопки. Мы удалим код отладки, чтобы вы получили следующее:
ShellExecute hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, 1
Изменения, которые вы должны внести, включают некоторую базовую обработку ошибок при вызове ShellExecute
. ShellExecute
возвращает код при запуске. Этот код может указывать на ошибку. Изучите пример программы, которую вы можете скачать на странице, на которую я ссылался выше. В нем программист записывает результат своего вызова в переменную с именем result
. Если result
равно или меньше 32, это указывает на ошибку. В примере программы ошибка отображается в сообщении об ошибке, но подумайте, что вы, возможно, захотите сделать.