- 27.08.2008
- 8 015
- 613
много раз здесь поднималась тема - а вот мине нада открыть вложенный файл...
возможный ответ - ф-ция 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 ) с русским языком (а возможно и длинным названием)
 ) с русским языком (а возможно и длинным названием)ну собсно все - так мона и хэндлы приложений получать
более вменяемого способа (с минимальными усилиями) я не нашёл (уж простите)
сцыкли для втупления:
	Ссылка скрыта от гостей
	Ссылка скрыта от гостей
	Ссылка скрыта от гостей
 
	 
	 
	 
	 
	 
 
		
 , а повторно сгенерить с тем же путем не получится
 , а повторно сгенерить с тем же путем не получится 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
	