много раз здесь поднималась тема - а вот мине нада открыть вложенный файл...
возможный ответ - ф-ция Shell
НО (лучи ненависти и освежение рта матерными выражениями), есть ряд особенностей:
-пути и русский язык (это не удивительно и для винды нормально)
-получение приложения открывшего файл (а вот это без извратов не получить)
пути (опять мат), подобрал комбинацию:
-палочки д.б.попендикулярно обратный слэш
-запуск д.б. вложенным - ибо cmd.exe чудит
выглядит все это так:
именно start, вложенный в cmd, иначе длинный путь, с русскими символами, не исполница
часть вторая развесёлая:
почему, вы спросите мя, не сразу в квери вкрячить имя файла, а я отвечу потамучта гладиолус не будет искать сцуко (у меня не искало, ненавижу эту ОС ) с русским языком (а возможно и длинным названием)
ну собсно все - так мона и хэндлы приложений получать
более вменяемого способа (с минимальными усилиями) я не нашёл (уж простите)
сцыкли для втупления:
возможный ответ - ф-ция Shell
НО (лучи ненависти и освежение рта матерными выражениями), есть ряд особенностей:
-пути и русский язык (это не удивительно и для винды нормально)
-получение приложения открывшего файл (а вот это без извратов не получить)
пути (опять мат), подобрал комбинацию:
-палочки д.б.
-запуск д.б. вложенным - ибо cmd.exe чудит
выглядит все это так:
Код:
fname=Replace(fname,{/},{\})'Windows specific
...............................
Dim res, run As String
run={cmd.exe /c "start } &fname &{"}
Print {Shell calling...}, run
res=Shell(run)
часть вторая развесёлая:
Код:
Sub CloseByFileName(fname As String)
On Error Goto ErrH
Dim req As String, ext As String
ext={.} & Strrightback(fname, {.})
req={Select * From Win32_Process Where CommandLine Like '%} & ext &{%'}
Print {WMI request:} &req
Dim objWMIService, strComputer As String
strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\CIMV2")
Dim objs
Set objs = objWMIService.ExecQuery(req,,48)
If Not objs Is Nothing Then
Forall obj In objs
' Print {*****************}
' Print obj.CommandLine
If obj.CommandLine Like {*} &fname &{*} Then obj.Terminate
End Forall
Else
Print {Application has Not found}
End If
Quit:
Exit Sub
ErrH:
RaiseError
Resume Quit
End Sub
ну собсно все - так мона и хэндлы приложений получать
более вменяемого способа (с минимальными усилиями) я не нашёл (уж простите)
сцыкли для втупления:
Ссылка скрыта от гостей
Ссылка скрыта от гостей
Ссылка скрыта от гостей