Открытие файла в его программе по умолчанию от VB6

импортируйте имя файла OS, file_extension = os.path.splitext ('/d1/d2/example.cs') имя файла '/d1/d2/example' file_extension, .cs '

5
задан tshepang 27 February 2014 в 06:02
поделиться

1 ответ

Я немного не понимаю в деталях вашего требования, но в целом для запуска файла из VB6 вы можете использовать ShellExecute и связанные с ним функции API.

Я не уверен, где лучше всего для этого найти, но я полагаю, вы можете начать здесь .

Изменить:
Вы близки. Измените это:

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 должен быть «open», чтобы открыть указанный файл с помощью программы на вашем компьютере, которая связана с расширением файла, который вы пытаетесь открыть (третий аргумент функции). Проверьте ссылку, которую я включил.

Это ведет к чему-то еще, что вам нужно проверить на вашем компьютере (и машинах, на которых вы будете использовать вашу программу). Расширение файла .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

Убедитесь, что есть текстовый файл с именем my. txt в папке "c: \ hi".

Запустите программу и нажмите кнопку. Он должен открыть текстовый файл с помощью программы редактора текстовых файлов по умолчанию, которую вы настроили на своем компьютере (например, Блокнот).

Если нет, скажите, пожалуйста, какую ошибку вы получаете и в какой строке возникает ошибка. Также проверьте Immediate Window. Я полагаю, что окно Immediate Window станет видимым, как только вы запустите свою программу, и будет оставаться видимым, пока ваша программа работает. Если ваш код достигает и проходит мимо строки с ShellExecute , в окне Immediate Window будет отображаться код, возвращенный вызовом этой функции. Это многое расскажет нам о вашей проблеме.

Если код работает, мы можем подумать о том, чтобы изменить программу, чтобы она работала с файлом, который вам нужен, - на "C: \ hi \ my.file".

Но что сначала происходит, когда вы дважды щелкаете файл в проводнике Windows? Если файл открывается, значит, мы знаем, что ваша система связала программу с файлами с расширением .file. Если файл не открывается, вам нужно связать программу с расширением .file. Дополнительные сведения см. В справке Windows. После настройки измените код в вашей тестовой программе в smb3 Click Event на:

Debug.Print ShellExecute(hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, 1)

Запустите это и щелкните программу. Файл должен открыться. Если нет, скажите мне, какую ошибку вы получаете и где, и скажите мне, что (если есть) находится в окне Immediate Window.

Если программа все же открывается, то в событии нажатия кнопки и в объявлении ShellExecute есть код, необходимый для программного открытия файлов. Но все же есть изменения, которые вы должны внести, и изменения, которые вы должны внести.

Вы должны внести изменения в событие нажатия кнопки. Мы удалим отладочный код, чтобы вы получили следующее:

ShellExecute hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, 1

Изменения, которые вы должны сделать, включают некоторую базовую обработку ошибок при вызове ShellExecute . ShellExecute возвращает код при запуске. Этот код может указывать на ошибку. Изучите образец программы, который вы можете скачать на странице, указанной выше. В нем программист записывает результат своего вызова в переменную с именем result . Если результат равен или меньше 32, это указывает на ошибку. В примере программы ошибка отображается в сообщении об ошибке, но подумайте, что вы можете сделать.

ShellExecute hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, 1

Изменения, которые вы должны сделать, включают некоторую базовую обработку ошибок при вызове ShellExecute . ShellExecute возвращает код при запуске. Этот код может указывать на ошибку. Изучите образец программы, который вы можете скачать на странице, указанной выше. В нем программист записывает результат своего вызова в переменную с именем result . Если результат равен или меньше 32, это указывает на ошибку. В примере программы ошибка отображается в сообщении об ошибке, но подумайте, что вы можете сделать.

ShellExecute hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, 1

Изменения, которые вы должны сделать, включают некоторую базовую обработку ошибок при вызове ShellExecute . ShellExecute возвращает код при запуске. Этот код может указывать на ошибку. Изучите образец программы, который вы можете скачать на странице, указанной выше. В нем программист записывает результат своего вызова в переменную с именем result . Если результат равен или меньше 32, это указывает на ошибку. В примере программы ошибка отображается в сообщении об ошибке, но подумайте, что вы можете сделать.

программист записывает результат своего вызова в переменную с именем result . Если результат равен или меньше 32, это указывает на ошибку. В примере программы ошибка отображается в сообщении об ошибке, но подумайте, что вы можете сделать.

программист записывает результат своего вызова в переменную с именем result . Если результат равен или меньше 32, это указывает на ошибку. В примере программы ошибка отображается в сообщении об ошибке, но подумайте, что вы можете сделать.

8
ответ дан 14 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: