Автор | Сообщение |
|
| постоянный участник
|
Пост N: 1538
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.08.10 02:07. Заголовок: Проверка наличия в системе ОФИСА !
Всем привет ! Подскажите, как можно проверить наличие ОФИСОВ под различные версии Windows ? Для Ms Word можно попытаться открыть через OLE свой файл. Если не открылся, значит нет его на компе ! Для Ms Excel тоже пройдет данный вариант. А как быть с OpenOffice: Write & Calc ??? Подскажите пожалуйста надежное решение.
|
|
|
Ответов - 39
, стр:
1
2
All
[только новые]
|
|
|
| Администратор
|
Пост N: 1635
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.08.10 08:27. Заголовок: Вместо oObj := TOle..
Вместо oObj := TOleAuto():new(cServer) надо вызывать: oObj := NewOle(cServer) и проверять: if oObj # nil ... Static func NewOle(cServer) Local oServer, hObj Begin sequence #ifdef __XHARBOUR__ hObj := CreateOleObject( cServer ) if OleError() == 0 oServer := TOleAuto():new( hObj ) #else hObj := Win_OleCreateObject( cServer ) if ! Empty( hObj ) oServer := Win_OleAuto():new( hObj ) #endif #ifdef __HARBOUR__ oServer:cClassName := cServer #endif endif end if oServer == nil MsgInfo('Ошибка инициализации OLE:' + cServer) endif Return oServer
|
|
|
|
| постоянный участник
|
Пост N: 1543
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.09.10 19:48. Заголовок: Подскажите, а как мо..
Подскажите, а как можно узнать установлен ли WinRar или WinZip в системе ?
|
|
|
|
| постоянный участник
|
Пост N: 446
Зарегистрирован: 27.01.07
|
|
Отправлено: 07.09.10 21:10. Заголовок: Проверить реестр, а ..
Проверить реестр, а потом папку, указанную в реестре.
|
|
|
|
| постоянный участник
|
Пост N: 1544
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.09.10 22:14. Заголовок: PSP пишет: Проверит..
PSP пишет: А как ?
|
|
|
|
| постоянный участник
|
Пост N: 447
Зарегистрирован: 27.01.07
|
|
Отправлено: 08.09.10 09:09. Заголовок: HKEY_LOCAL_MACHINE..
HKEY_LOCAL_MACHINE\Software\<ИмяСофта> (для 7-Zip: HKEY_LOCAL_MACHINE\Software\7-Zip) В Harbour для этого есть функция Win_RegGet(). Про xHarbour не подскажу, но тоже должна быть. Можно еще регистрацию расширения имени файла проверить в HKEY_CLASSES_ROOT. Запусти RegEdit, посмотри. Все станет ясно.
|
|
|
|
| |
Пост N: 1
Зарегистрирован: 27.07.10
|
|
Отправлено: 08.09.10 11:16. Заголовок: Проверка наличия в системе ОФИСА !
Консольное приложение (на скорую руку) в MiniGUI, проверяющее наличие 7-Zip цитата: | #include "MiniGUI.ch" Procedure Main Local cPath7z Open registry oReg key HKEY_LOCAL_MACHINE Section 'Software\7-Zip' Get value cPath7z Name 'Path' of oReg Close registry oReg Cls If !Empty( cPath7z ) If File( cPath7z + '\7z.exe' ) ? '7-zip installed' Else ? '7-zip NO installed' Endif Else ? 'No 7-zip' Endif Wait Return |
| Думаю, примерно так же можно поступить с WinRAR и WinZip.
|
|
|
|
| постоянный участник
|
Пост N: 1545
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.09.10 11:58. Заголовок: Спасибо БОЛЬШОЕ ! :..
Спасибо БОЛЬШОЕ ! Буду делать.
|
|
|
|
| постоянный участник
|
Пост N: 2299
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.08.12 12:25. Заголовок: Подскажите пожалуйст..
Подскажите пожалуйста, как можно узнать версию ОФИСА ? Т.е. мне нужно различать Excel 2003 и 2007 на хХарборе !
|
|
|
|
| |
Пост N: 92
Зарегистрирован: 16.12.08
|
|
Отправлено: 21.08.12 13:02. Заголовок: Андрей попробуй пора..
Андрей попробуй поработать с реестром. Ветка: HKEY_CLASSES_ROOT\Word.Application\CurVer или HKEY_CLASSES_ROOT\Excel.Application\CurVer Year Released Name Version Comments 1995 Word 95 7.0 Included in Office 95 1997 Word 97 8.0 Included in Office 97 1998 Word 98 8.5 Only sold as part of Office 97 Powered By Word 98, which was only available in Japan and Korea. 1999 Word 2000 9.0 Included in Office 2000 2001 Word 2002 10.0 Included in Office XP 2003 Office Word 2003 11.0 Included in Office 2003 2006 Office Word 2007 12.0 Included in Office 2007; released to businesses on November 30, 2006, released worldwide to consumers on January 30, 2007 2010 Word 2010 14.0 Included in Office 2010 Должно получиться.
|
|
|
|
| постоянный участник
|
Пост N: 2300
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.08.12 13:37. Заголовок: santy пишет: попроб..
santy пишет: цитата: | попробуй поработать с реестром. |
| Спасибо, попробую !!!
|
|
|
|
| |
Пост N: 39
Зарегистрирован: 15.12.09
|
|
Отправлено: 25.08.12 16:38. Заголовок: http://www.sysengine..
|
|
|
|
|
| постоянный участник
|
Пост N: 2303
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.08.12 21:11. Заголовок: pureproft Спасибо ..
pureproft Спасибо большое за информацию !!! Очень много полезного... С ходу нашел то что так долго искал на русском - "Win32 API по шагам.chm" и "VBA-первые шаги.chm" !!!
|
|
|
|
| постоянный участник
|
Пост N: 4693
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.02.16 19:43. Заголовок: Всем привет ! Понадо..
Всем привет ! Понадобилось проверить программно есть ли WinMerge на компе пользователя. Как это сделать ? И как получить полный путь к установленному WinMerge ? А то развелось куча всяких версий виндов, и не знаешь как поступать .... Заранее спасибо за помощь. Проверял так: cPath := win_regRead( "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinMerge.exe" ) Возвращает NIL Хотя у меня запускается WinMerge из своей программы.
|
|
|
|
| |
Пост N: 775
Зарегистрирован: 20.02.11
|
|
Отправлено: 14.02.16 20:41. Заголовок: Andrey пишет: Прове..
Andrey пишет: проверь через WMI , пример в tsb_filter
|
|
|
|
| постоянный участник
|
Пост N: 4696
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.02.16 22:10. Заголовок: Haz пишет: проверь ..
Haz пишет: цитата: | проверь через WMI , пример в tsb_filter |
| Запустил пример. В нем НЕТ WinMerge, хотя на компе стоит...
|
|
|
|
| |
Пост N: 778
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.02.16 11:17. Заголовок: Andrey пишет: , хот..
Andrey пишет: Догадываюсь, что в списке установок в панели управления- программы и компоненты тоже нет ?
|
|
|
|
| |
Пост N: 173
Зарегистрирован: 21.04.13
|
|
Отправлено: 15.02.16 12:01. Заголовок: Проверка наличия Calc (Open Office)
Function tst_opf_srv() Local ret:=.f. Local oServiceManager begin sequence with {|e_p| break(e_p) } oServiceManager := win_oleCreateObject("com.sun.star.ServiceManager" ) lopf := !( oServiceManager = NIL ) ret :=lopf recover ret:=.f. end sequence return ret
|
|
|
|
| постоянный участник
|
Пост N: 4698
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.02.16 12:24. Заголовок: Haz пишет: в списке..
Haz пишет: цитата: | в списке установок в панели управления- программы и компоненты тоже нет ? |
| Есть.
|
|
|
|
| |
Пост N: 779
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.02.16 12:37. Заголовок: Andrey пишет: Есть...
Andrey пишет: чудеса тогда должен быть в WMI Скачай какой нить простенький фришный WMI Explorer и скорми ему запрос SELECT * FROM Win32_Product покажет все поля , мож не в Caption искать надо
|
|
|
|
| постоянный участник
|
Пост N: 4700
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.02.16 13:04. Заголовок: Нашёл WMI Explorer ..
Нашёл WMI Explorer Version 1.16 KS-Soft Запустил, в списке нет WinMerge и WinRar тоже нет... Хотя в панели тоже WinRar так же присутствует. У меня Win8.1 32bit
|
|
|
|
| |
Пост 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
[только новые]
|
|