Открытие файла в программе по умолчанию из VB6 - PullRequest
4 голосов
/ 01 сентября 2009

Я хочу открыть файл в своем приложении VB6, нажав команду. Файл является типом файла, прочитанным другой программой. Я хочу, чтобы он открыл его, и программа, которая читает тип файла, должна также открыться, потому что, когда он находит этот тип файла, он открывается автоматически. Может ли кто-нибудь помочь мне с этим, я вроде новичок на VB6 (только вчера получил).

Ответы [ 2 ]

7 голосов
/ 01 сентября 2009

Я в некотором роде заблудился в деталях вашего требования, но в целом для запуска файла из 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, это указывает на ошибку. В примере программы ошибка отображается в сообщении об ошибке, но подумайте, что вы, возможно, захотите сделать.

0 голосов
/ 14 февраля 2017

Чтобы открыть файл my.ini с помощью этого кода

Первый регистр dll с использованием этого кода

Public 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

, затем примените следующий код: _

Debug.Print ShellExecute(hWnd, "open", "C:\Program Files\MySQL\MySQL Server 5.0\my.ini", vbNullString, vbNullString, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...