Автор | Сообщение |
|
| постоянный участник
|
Пост N: 1538
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.08.10 02:07. Заголовок: Проверка наличия в системе ОФИСА !
Всем привет ! Подскажите, как можно проверить наличие ОФИСОВ под различные версии Windows ? Для Ms Word можно попытаться открыть через OLE свой файл. Если не открылся, значит нет его на компе ! Для Ms Excel тоже пройдет данный вариант. А как быть с OpenOffice: Write & Calc ??? Подскажите пожалуйста надежное решение.
|
|
|
Ответов - 39
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 780
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.02.16 13:31. Заголовок: Andrey пишет: и Wi..
Andrey пишет: аналогичная фигня винрар есть в панели а в списке вимиай нет
|
|
|
|
| постоянный участник
|
Пост N: 4702
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.02.16 14:18. Заголовок: Haz пишет: аналогич..
Haz пишет: И как тогда узнать путь к WinMerge ?
|
|
|
|
| |
Пост N: 782
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.02.16 14:27. Заголовок: перебором по путям и..
перебором по путям из переменной %PATH% или читай ключ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ и все что в нем
|
|
|
|
| постоянный участник
|
Пост N: 4703
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.02.16 14:42. Заголовок: Haz пишет: переборо..
Haz пишет: цитата: | перебором по путям из переменной %PATH% |
| Нет в путях, не устанавливается там путь. А как перебрать все нужные ключи ? У меня почему то вот такой ключ: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinMerge_is1
|
|
|
|
| постоянный участник
|
Пост N: 1186
Зарегистрирован: 27.01.07
|
|
Отправлено: 15.02.16 15:15. Заголовок: Проверь, к примеру, ..
Проверь, к примеру, Win32_InstalledWin32Program
|
|
|
|
| |
Пост N: 783
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.02.16 15:40. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как перебрать все нужные ключи ? |
| смотреть в примерах UNINSTALL_EDITOR
|
|
|
|
| |
Пост N: 784
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.02.16 15:43. Заголовок: PSP пишет: Win32_In..
PSP пишет: цитата: | Win32_InstalledWin32Program |
|
|
|
|
|
| постоянный участник
|
Пост N: 4707
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.02.16 18:48. Заголовок: Win32_InstalledWin32..
Win32_InstalledWin32Program - классная штука, но мне не подойдёт. Оказалось нужно получить полный путь к WinMergeU.exe для вызова этой утилиты из командной строки. Для Win32-bit искать путь можно через наличие файла по пути C:\Program Files\WinMerge\WinMergeU.exe А как для Win64-bit проверять ?
|
|
|
|
| |
Пост N: 788
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.02.16 10:48. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как для Win64-bit проверять ? |
| проверяй через Uninstall , там есть и путь откуда установили и куда установили
|
|
|
|
| постоянный участник
|
Пост N: 4708
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.02.16 16:01. Заголовок: Haz пишет: проверяй..
Haz пишет: цитата: | проверяй через Uninstall , там есть и путь откуда установили и куда установили |
| Вот здесь ключ ....\WinMerge_is1 А вдруг на другом компе будет \WinMerge_is5 ! Как тогда сделать ?
|
|
|
|
| постоянный участник
|
Пост N: 204
Зарегистрирован: 29.05.10
|
|
Отправлено: 16.02.16 16:04. Заголовок: Вот так "нахожу&..
Вот так "нахожу" путь для ворда. Работает на всех системах( хр, семерка, восьмерка, десятка, 32,64) Puti:=MSWORD_PATH() **************************** Function MSWORD_PATH() **************************** Local nHandle, cValue := "" if RegOpenKey( HKEY_LOCAL_MACHINE,; "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths", @nHandle ) == 0 RegQueryValue( nHandle, "WINWORD.EXE", @cValue ) cValue := lfn2sfn(cValue) RegCloseKey( nHandle ) endif Return (cValue)
|
|
|
|
|
| |
Пост N: 789
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.02.16 16:18. Заголовок: Andrey пишет: Вот з..
Andrey пишет: цитата: | Вот здесь ключ ....\WinMerge_is1 А вдруг на другом компе будет \WinMerge_is5 ! Как тогда сделать ? |
| Пример из Minigui получает ВСЕ ключи. Найти в массиве элемент содержащий "WinMerge" - решается одной строкой и по барабану какое _ISxxx там приписано или как MMK написал - тоже должно работать
|
|
|
|
| постоянный участник
|
Пост N: 4709
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.02.16 17:43. Заголовок: Haz пишет: Пример и..
Haz пишет: цитата: | Пример из Minigui получает ВСЕ ключи. |
| Ткни в название, если есть. А то их много.... Один нашел, вроде работает. Но ключ ищет дурацкий: oKey:Get("DisplayIcon")
|
|
|
|
| |
Пост N: 790
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.02.16 17:47. Заголовок: Andrey пишет: Ткни ..
Andrey пишет: цитата: | Ткни в название, если есть. А то их много.... |
| вчера же только тыкал цитата: | смотреть в примерах UNINSTALL_EDITOR |
| сами названия из RegEdit видно
|
|
|
|
| постоянный участник
|
Пост N: 4710
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.02.16 18:50. Заголовок: Haz пишет: вчера же..
Haz пишет: Да не посмотрел сразу... Упустил... На другое переключился. Спасибо !
|
|
|
|
| постоянный участник
|
Пост N: 4711
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.02.16 19:06. Заголовок: Сделал ! Кому интере..
Сделал ! Кому интересно, вот исходник. //////////////////////////////////////////////////////////////////////// // Формируем полное имя установленного WinMerge через запись в реестре Скрытый текст
Function GetInstallWinMerge(hKey) Local aInst := {}, oReg, cReg := "", oKey, cFile Local cName := "", nId:= 0, cPathRes := '', cFind, nJ := 0 cReg := "WinMerge" hKey := IF(hKey == NIL, HKEY_LOCAL_MACHINE, hKey) oReg := TReg32():New( hKey, "Software\Microsoft\Windows\CurrentVersion\Uninstall" ) While RegEnumKey( oReg:nHandle, nId++, @cReg ) == 0 oKey := TReg32():New( hKey, "Software\Microsoft\Windows\CurrentVersion\Uninstall\" + cReg ) cName := oKey:Get("DisplayIcon") //MsgLog(nJ++,cName) if !empty(cname) .and. AT("WINMERGE",upper(cname)) > 0 //MsgLog("=============",cname) cPathRes := cname endif oKey:Close() End IF !empty(cPathRes) // Вторая попытка cPathRes := win_regRead( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinMerge_is1\Inno Setup: App Path") ENDIF Return cPathRes #pragma BEGINDUMP #define _WIN32_WINNT 0x0400 #include <shlobj.h> #include <windows.h> #include <commctrl.h> #include "hbapi.h" HB_FUNC ( REGENUMKEY ) { BYTE buffer[ 128 ]; hb_retnl( RegEnumKey( ( HKEY ) hb_parnl( 1 ), hb_parnl( 2 ), buffer, 128 ) ); hb_storc( buffer, 3 ); } #pragma ENDDUMP
|
|
|
|
|
| |
Пост N: 791
Зарегистрирован: 20.02.11
|
|
Отправлено: 17.02.16 20:46. Заголовок: Andrey пишет: Сдела..
Andrey пишет: цитата: | Сделал ! Кому интересно, вот исходник. |
|
|
|
|
|
| |
Пост N: 5482
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.02.16 22:24. Заголовок: Andrey Я не чекал т..
Andrey Я не чекал тест , просто интересно , при таком подходе и путь к Winrar поймает (под вынь 32 или 64) ?
|
|
|
|
| постоянный участник
|
Пост N: 4712
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.02.16 23:29. Заголовок: Dima пишет: Я не че..
Dima пишет: цитата: | Я не чекал тест , просто интересно , при таком подходе и путь к Winrar поймает (под вынь 32 или 64) ? |
| Вроде должен. Пробуй заменить cReg := "WinMerge" на WinRar и строку поменяй ещё: if !empty(cname) .and. AT("WINMERGE",upper(cname)) > 0 на if !empty(cname) .and. AT(upper(cReg),upper(cname)) > 0
|
|
|
Ответов - 39
, стр:
1
2
All
[только новые]
|
|