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

Просто проблема с открытием файла, тип которого заранее не известен, известен только путь к нему. Так вот Shell с .exe замечательно работает, а если это будет файл другого типа (doc, xls, ppt, tif), то как его открыть (запустить) просто для просмотра?
...
Рейтинг: 0 / 0
20.12.2005, 11:36
    #33446030
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shell или другая функция открытия файла
Код: 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
20.12.2005, 12:02
    #33446124
Letter_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shell или другая функция открытия файла
Код: 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
20.12.2005, 12:05
    #33446140
Plux
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shell или другая функция открытия файла
А можно к этому какие-нибудь пояснения?

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

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

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

как с этим можно бороться?
...
Рейтинг: 0 / 0
25.04.2006, 12:08
    #33688375
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shell или другая функция открытия файла
Причем здесь процесс?
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
30.11.2006, 11:11
    #34166361
ArthurUsm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shell или другая функция открытия файла
TIKOбез API и по проще
References /////смотри рисунок
Dim s As New Shell
s.Open "c:\db\любойфайл.txt"



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


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