Что нового

[Процессы] Определить версию приложения (например по пути exe-файла)

Heavenanvil

Чайник
Сообщения
21
Репутация
0
Версия AutoIt: v3.3.14.5

Описание: Нужно сделать разный алгоритм работы для разных версий приложения.
Возможно получится с помощью пути, где лежит exe-файл.

Для примера установлена программа Adobe Premiere версии CS 5.5 по пути:
C:\Program Files\Adobe\Adobe Premiere Pro CS5.5\Adobe Premiere Pro.exe

И версия CC 2019:
C:\Program Files\Adobe\Adobe Premiere Pro CC 2019\Adobe Premiere Pro.exe

И в дальнейшем, в зависимости от версии запустить тот или иной алгоритм действий. Например вывести номер версии на экран всплывающим сообщением.

instance там повторяются.
handle тоже меняется.
Возможно получится определить версию по другому параметру, не по пути.

Примечания:
Описания процессов прилагаю:
>>>> Window <<<<
Title: Adobe Premiere Pro - D:\VIDEO\СЮЖЕТЫ\!ЗАГОТОВКА_new\СЮЖЕТ_CS_5.5
Class: Premiere Pro
Position: 87, 26
Size: 1280, 1024
Style: 0x14CF0000
ExStyle: 0x00000100
Handle: 0x0000000000C40456

>>>> Control <<<<
Class: DroverLord - Window Class
Instance: 7
ClassnameNN: DroverLord - Window Class7
Name:
Advanced (Class): [CLASS:DroverLord - Window Class; INSTANCE:7]
ID:
Text: DroverLord - TabPanel Window
Position: 254, 48
Size: 287, 343
ControlClick Coords: 45, 195
Style: 0x50000000
ExStyle: 0x00000000
Handle: 0x00000000004E090C

>>>> Mouse <<<<
Position: 394, 319
Cursor ID: 0
Color: 0x595959

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
DroverLord - Frame Window
DroverLord - TabPanel Window
OS_ViewContainer
OS_EditTextContainer
DroverLord - Frame Window
DroverLord - TabPanel Window
OS_ViewContainer
OS_EditTextContainer
DroverLord - Frame Window
DroverLord - TabPanel Window
DroverLord - Frame Window
DroverLord - TabPanel Window
SubWindow
DroverLord - Frame Window
DroverLord - TabPanel Window
DroverLord - Frame Window
DroverLord - TabPanel Window
DroverLord - Frame Window
DroverLord - TabPanel Window
DroverLord - Frame Window
DroverLord - TabPanel Window
DroverLord - Frame Window
DroverLord - TabPanel Window


>>>> Hidden Text <<<<
SubWindow
DroverLord - TabPanel Window
OS_ViewContainer
OS_EditTextContainer
>>>> Window <<<<
Title: Adobe Premiere Pro 2019 - D:\VIDEO\СЮЖЕТЫ\!ЗАГОТОВКА_new\СЮЖЕТ_CC_2019
Class: Premiere Pro
Position: 513, 72
Size: 1280, 1024
Style: 0x14CF0000
ExStyle: 0x00000100
Handle: 0x00000000003E09C6

>>>> Control <<<<
Class: DroverLord - Window Class
Instance: 7
ClassnameNN: DroverLord - Window Class7
Name:
Advanced (Class): [CLASS:DroverLord - Window Class; INSTANCE:7]
ID:
Text: DroverLord - Frame Window
Position: 251, 44
Size: 293, 362
ControlClick Coords: 252, 17
Style: 0x50000000
ExStyle: 0x00000000
Handle: 0x00000000000C0EBA

>>>> Mouse <<<<
Position: 1024, 183
Cursor ID: 0
Color: 0x2E2E2E

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
DroverLord - Frame Window
OS_ViewContainer
DroverLord - TabPanel Window
OS_ViewContainer
OS_EditTextContainer
DroverLord - Frame Window
OS_ViewContainer
DroverLord - TabPanel Window
OS_ViewContainer
OS_EditTextContainer
DroverLord - Frame Window
OS_ViewContainer
DroverLord - TabPanel Window
DroverLord - Frame Window
OS_ViewContainer
DroverLord - TabPanel Window
SubWindow
DroverLord - Frame Window
OS_ViewContainer
DroverLord - TabPanel Window
DroverLord - Frame Window
OS_ViewContainer
DroverLord - TabPanel Window
DroverLord - Frame Window
OS_ViewContainer
DroverLord - TabPanel Window
DroverLord - Frame Window
DroverLord - TabPanel Window
DroverLord - Frame Window
DroverLord - TabPanel Window


>>>> Hidden Text <<<<
SubWindow
DroverLord - TabPanel Window
 

ra4o

Скриптер
Сообщения
978
Репутация
180
Путь к установленному приложению можно прочитать из реестра, вот, например для "Acrobat Reader"
Код:
$sFileName='AcroRd32.exe'
$sPath=RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader\DC\InstallPath','')
MsgBox(0,'',FileGetVersion($sPath&'\'&$sFileName))
 
Автор
Heavenanvil

Heavenanvil

Чайник
Сообщения
21
Репутация
0
ra4o сказал(а):
Путь к установленному приложению можно прочитать из реестра, вот, например для "Acrobat Reader"
Код:
$sFileName='AcroRd32.exe'
$sPath=RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader\DC\InstallPath','')
MsgBox(0,'',FileGetVersion($sPath&'\'&$sFileName))
Забыл указать, что мне нужно не просто определить версию. А выяснить, какая именно версия приложения запущена в данный момент, поскольку имя процесса у них одно: "Adobe Premiere Pro.exe"
 

hedji

Продвинутый
Сообщения
390
Репутация
79
Попробуйте через _WinAPI_GetProcessFileName()
Код:
#include <WinAPIProc.au3>

Local $iID = ProcessExists('Adobe Premiere Pro.exe')

If $iID Then
    ConsoleWrite(_WinAPI_GetProcessFileName($iID) & @CRLF)
EndIf
 
Автор
Heavenanvil

Heavenanvil

Чайник
Сообщения
21
Репутация
0
hedji сказал(а):
Попробуйте через _WinAPI_GetProcessFileName()
Код:
#include <WinAPIProc.au3>

Local $iID = ProcessExists('Adobe Premiere Pro.exe')

If $iID Then
    ConsoleWrite(_WinAPI_GetProcessFileName($iID) & @CRLF)
EndIf
Зачем мне получать имя файла?
Я же говорю на компе 2 версии премьера: 5.5 и 2019.
Имя файла одинаковое в обоих случаях.
Мне нужно опеределить, какая версия запущена в данный момент.
 

ra4o

Скриптер
Сообщения
978
Репутация
180
Так ?
Код:
#include <WinAPIProc.au3>

Local $iID = ProcessExists('Adobe Premiere Pro.exe')

If $iID Then
	MsgBox(0,'',FileGetVersion(_WinAPI_GetProcessFileName($iID)))
EndIf
 

hedji

Продвинутый
Сообщения
390
Репутация
79
Heavenanvil сказал(а):
Зачем мне получать имя файла?
Я же говорю на компе 2 версии премьера: 5.5 и 2019.
Имя файла одинаковое в обоих случаях.
Мне нужно опеределить, какая версия запущена в данный момент.
Например затем, что он вернет не имя файла, а полный путь и сразу будет видно какой именной файл запущен ;)
 

Вложения

Автор
Heavenanvil

Heavenanvil

Чайник
Сообщения
21
Репутация
0
hedji сказал(а):
Например затем, что он вернет не имя файла, а полный путь и сразу будет видно какой именной файл запущен ;)
Хорошо. Мы выяснили путь. Как теперь мне сделать условие, которое определит что в пути есть нужные символы и в дальнейшем можно производить определённые действия? Другими словами, как конкретно использовать этот путь?

На счёт версии exe-файла, тоже можно попробовать.
 

hedji

Продвинутый
Сообщения
390
Репутация
79
Код:
#include <WinAPIProc.au3>

Local $iID = ProcessExists('notepad++.exe')

If $iID Then
    $path=_WinAPI_GetProcessFileName($iID)
	ConsoleWrite($path & @CRLF)
	If StringInStr($path, "C:\Program Files (x86)\Notepad++") Then
		MsgBox(0, "", "Это версия из папки Programm Files")
	Else
		MsgBox(0, "", "Это версия не из папки Programm Files")
	EndIf
EndIf
 

ra4o

Скриптер
Сообщения
978
Репутация
180
как конкретно использовать этот путь?
Можно и так :
Код:
#include <WinAPIProc.au3>

Local $iID = ProcessExists('Adobe Premiere Pro.exe')

If $iID Then
	$sPath = _WinAPI_GetProcessFileName($iID)
	ConsoleWrite($sPath & @CRLF)
EndIf

If StringInStr($sPath, 'CS5.5') Then
	MsgBox(0, '', 'Adobe Premiere версии CS 5.5')
ElseIf StringInStr($sPath, 'CC 2019') Then
	MsgBox(0, '', 'Adobe Premiere версии CC 2019')
Else
	MsgBox(0, '', 'Adobe Premiere другой версии')
EndIf
 
Автор
Heavenanvil

Heavenanvil

Чайник
Сообщения
21
Репутация
0
Спасибо всем. Думаю этого хватит для решения моей проблемы.
 
Верх