powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / shell или другая функция открытия файла
10 сообщений из 10, страница 1 из 1
shell или другая функция открытия файла
    #33445988
Plux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста Shell работает только для .exe файлов или как?

Просто проблема с открытием файла, тип которого заранее не известен, известен только путь к нему. Так вот Shell с .exe замечательно работает, а если это будет файл другого типа (doc, xls, ppt, tif), то как его открыть (запустить) просто для просмотра?
...
Рейтинг: 0 / 0
shell или другая функция открытия файла
    #33446030
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
Option Explicit

Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessID As Long
    dwThreadID As Long
End Type

Private Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Long
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
End Type

Private Const NORMAL_PRIORITY_CLASS = &H20&
Private Const INFINITE = - 1 &

Public Sub API_OpenDocAndWait(fileName As String)
    Dim sfinal As String
    Dim s As String
    
    sfinal = fileName
    s = String$( 255 ,  0 )
    FindExecutable sfinal, "", s
    sfinal = Mid$(s,  1 , InStr( 1 , s, Chr$( 0 )) -  1 ) & " """ & sfinal & """"
    API_ExecCmd (sfinal)
End Sub

Private Function API_ExecCmd(cmdline$) As Long
    Dim proc As PROCESS_INFORMATION
    Dim start As STARTUPINFO
    Dim Ret As Long
    
    ' Initialize the STARTUPINFO structure:
    start.cb = Len(start)
    
    ' Start the shelled application:
    Ret& = CreateProcessA(vbNullString, cmdline$,  0 &,  0 &,  1 &, NORMAL_PRIORITY_CLASS,  0 &, vbNullString, start, proc)
    
    ' Wait for the shelled application to finish:
    Ret& = WaitForSingleObject(proc.hProcess, INFINITE)
    Call GetExitCodeProcess(proc.hProcess, Ret&)
    Call CloseHandle(proc.hThread)
    Call CloseHandle(proc.hProcess)
    API_ExecCmd = Ret&
End Function


...
Рейтинг: 0 / 0
shell или другая функция открытия файла
    #33446124
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
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_SHOWNORMAL =  1 
Private Sub Form_Load()
    ShellExecute Me.hwnd, vbNullString, "C:\1.doc", vbNullString, "", SW_SHOWNORMAL
End Sub
...
Рейтинг: 0 / 0
shell или другая функция открытия файла
    #33446140
Plux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно к этому какие-нибудь пояснения?

А что попроще никак???
...
Рейтинг: 0 / 0
shell или другая функция открытия файла
    #33446179
Plux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Letter_D огромное)))
...
Рейтинг: 0 / 0
shell или другая функция открытия файла
    #33446316
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
без API и по проще
References /////смотри рисунок
Dim s As New Shell
s.Open "c:\db\любойфайл.txt"
...
Рейтинг: 0 / 0
shell или другая функция открытия файла
    #33450850
Plux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо TIKO , так действительно проще))))
...
Рейтинг: 0 / 0
shell или другая функция открытия файла
    #33688253
kb_nn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а API_ExecCmd возвращает процесс?
что-то она ведет себя очень странно.

например notepad.exe она мне открыла в текстовом виде, а explorer.exe предложила сохранить из с:\windows

хотя например файлы txt, doc открывает нормально.
и некоторые exe, между прочим, тоже.

как с этим можно бороться?
...
Рейтинг: 0 / 0
shell или другая функция открытия файла
    #33688375
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем здесь процесс?
AllApi
The GetExitCodeProcess function retrieves the termination status of the specified process.
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero.


kb_nn
например notepad.exe она мне открыла в текстовом виде, а explorer.exe предложила сохранить из с:\windows.

Скорее всего это связано с политиками безопаности Windows. Когда вы а командной строке выполняете "explorer.exe", что происходит?

Не стоило ради этого старый топик поднимать, у вас уже есть один такой же.
...
Рейтинг: 0 / 0
shell или другая функция открытия файла
    #34166361
ArthurUsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TIKOбез API и по проще
References /////смотри рисунок
Dim s As New Shell
s.Open "c:\db\любойфайл.txt"



Большое Спасибо!!!!!!!!!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / shell или другая функция открытия файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]