How to check whether a program is available on a PC (Views: 708)
Problem/Question/Abstract: How do you find out whether a program is available ? For example, how can you programmatically tell whether MS Word 2000 is installed rather than Lotus WordPro? The OS can be Win95, 98, ME, 2000, NT4. I did not find any Win API function allowing to find out if a specific application exists on the machine. The nearest I found is the FindExecutable function but you need to pass it a document file name. Should I read the registry, to enumerate the currently installed applications? Answer: For the MS Word case, you might want to start Word in automation mode to see if its present. The following routine does that: function IsWordPresent(var IsActive: Boolean): Boolean; var MSWord: Variant; begin Result := False; IsActive := False; try MSWord := GetActiveOleObject('Word.Application'); Result := not VarIsEmpty(MSWord); IsActive := not VarIsEmpty(MSWord) except MSWord := Unassigned end; if VarIsEmpty(MSWord) then begin try MSWord := CreateOleObject('Word.Application'); Result := not VarIsEmpty(MSWord); if Result then MSWord.Quit except end; end; end; |