Zireael |
Отправлено: 22 Февраля, 2019 - 17:42:39
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как сделать условие с помощью external "Установлена ли программа мазила?"Если да, то проверить: "Запусщена ли она?" Если нет, то запустить
code (Отобразить)CODE:#define HKEY_LOCAL_MACHINE -2147483646
#define KEY_ALL_ACCESS 983103
#define KEY_WOW64_64KEY 256
external(INT, "RegOpenKeyEx", "RegOpenKeyExA", "Advapi32.dll" );
external(INT, "RegCloseKey", "RegCloseKey", "Advapi32.dll" );
external(INT, "RegQueryValueEx", "RegQueryValueExA", "Advapi32.dll" );
external(INT, "RegEnumKeyEx", "RegEnumKeyExA", "Advapi32.dll" );
string path="SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"; // путь
string name_programm="Mozilla"; // имя программы
string parametr="DisplayIcon"; // параметр
char result[255], section[255];
int rKey, byte=255, programm_install=0, size_buffer=sizearray(section);
string path_to_exe;
string rn=formatic(13)+formatic(10);
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, path, 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, address(#rKey))==0)
{
for(int i=0; RegEnumKeyEx(rKey, i, address(#section[0]), address(#size_buffer), 0, 0, 0, 0)==0; i++) // перебор всех подразделов
{
//messagebox(format(#sector[0]));
if(regexsearch(1, #path_to_exe, format(#section[0]), name_programm)) // поиск подраздела, в котором есть слово 'Mozilla'
{
messagebox("Полное имя подраздела: "+rn+format(#section[0]));
RegCloseKey(rKey);
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, path+"\"+format(#section[0]), 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, address(#rKey))==0)
{
if(RegQueryValueEx(rKey, parametr, 0, 0, address(#result[0]), address(#byte))==0) // получить значение REG_SZ
{
messagebox("Значение раздела "+parametr+rn+format(#result[0]));
programm_install=1; // флаг что путь найден
break;
}
RegCloseKey(rKey);
}
}
size_buffer=sizearray(section);
}
if(programm_install) // если программа установлена
{
if(window (-1, "MozillaWindowClass", -1)==0)
{
messagebox("Мозилла не открыта");
if(regexsearch(1, #path_to_exe, format(#result[0]), ".+?\.exe"))
{
messagebox("Путь к программе: "+rn+path_to_exe);
start(path_to_exe); // запуск программы
}
}
else
{
messagebox("Мозилла уже открыта");
}
}
else
{
messagebox("Мозилла не установлена");
}
} |
|
|
007wan |
Отправлено: 22 Февраля, 2019 - 18:09:42
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: Как сделать условие с помощью external "Установлена ли программа мазила?"Если да, то проверить: "Запусщена ли она?" Если нет, то запустить
code (Отобразить)CODE:#define HKEY_LOCAL_MACHINE -2147483646
#define KEY_ALL_ACCESS 983103
#define KEY_WOW64_64KEY 256
external(INT, "RegOpenKeyEx", "RegOpenKeyExA", "Advapi32.dll" );
external(INT, "RegCloseKey", "RegCloseKey", "Advapi32.dll" );
external(INT, "RegQueryValueEx", "RegQueryValueExA", "Advapi32.dll" );
external(INT, "RegEnumKeyEx", "RegEnumKeyExA", "Advapi32.dll" );
string path="SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"; // путь
string name_programm="Mozilla"; // имя программы
string parametr="DisplayIcon"; // параметр
char result[255], section[255];
int rKey, byte=255, programm_install=0, size_buffer=sizearray(section);
string path_to_exe;
string rn=formatic(13)+formatic(10);
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, path, 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, address(#rKey))==0)
{
for(int i=0; RegEnumKeyEx(rKey, i, address(#section[0]), address(#size_buffer), 0, 0, 0, 0)==0; i++) // перебор всех подразделов
{
//messagebox(format(#sector[0]));
if(regexsearch(1, #path_to_exe, format(#section[0]), name_programm)) // поиск подраздела, в котором есть слово 'Mozilla'
{
messagebox("Полное имя подраздела: "+rn+format(#section[0]));
RegCloseKey(rKey);
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, path+"\"+format(#section[0]), 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, address(#rKey))==0)
{
if(RegQueryValueEx(rKey, parametr, 0, 0, address(#result[0]), address(#byte))==0) // получить значение REG_SZ
{
messagebox("Значение раздела "+parametr+rn+format(#result[0]));
programm_install=1; // флаг что путь найден
break;
}
RegCloseKey(rKey);
}
}
size_buffer=sizearray(section);
}
if(programm_install) // если программа установлена
{
if(window (-1, "MozillaWindowClass", -1)==0)
{
messagebox("Мозилла не открыта");
if(regexsearch(1, #path_to_exe, format(#result[0]), ".+?\.exe"))
{
messagebox("Путь к программе: "+rn+path_to_exe);
start(path_to_exe); // запуск программы
}
}
else
{
messagebox("Мозилла уже открыта");
}
}
else
{
messagebox("Мозилла не установлена");
}
}
Странно, почему-то не работает(ни одного сообщения) |
|
|
Zireael |
Отправлено: 22 Февраля, 2019 - 19:56:31
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: string path="SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"; // путь
А так:
CODE:string path="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; // путь
И тут забыл исправить имя переменной //messagebox(format(#sector[0]));
CODE://messagebox(format(#section[0])); |
|
|
|