![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Я могу найти программу через ОLE
Код:
Acad:=GetActiveOleObject('AutoCAD.Application') as IAcadApplication;
IsOLEObjectInstalled('AutoCAD.Application')Как узнать где он установлен? В какой папке? Последний раз редактировалось lmikle, 25.08.2015 в 19:41. |
|
#2
|
||||
|
||||
|
Цитата:
Код:
uses
TlHelp32;
function GetExeFilePath(ExeFileName: String): String;
var
hSnapshot, hSnapshot2: THandle;
Proc: TProcessEntry32;
m: TModuleEntry32;
begin
Result := '';
hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
try
proc.dwSize := Sizeof(proc);
if Process32First(hSnapshot, proc) then
repeat
if AnsiSameText(proc.szExeFile, ExeFileName) then
begin
hSnapshot2 := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,
proc.th32ProcessID);
try
m.dwSize := SizeOf(TModuleEntry32);
if Module32First(hSnapshot2, m) then
begin
Result := m.szExePath;
Exit;
end;
finally
CloseHandle(hSnapshot2);
end;
end;
until not Process32Next(hSnapshot, proc);
finally
CloseHandle(hSnapshot);
end;
end; |
|
#3
|
|||
|
|||
|
Я так понял это путь к запущенной программе, да?
|
|
#4
|
||||
|
||||
|
Да это так, проверил, но судя по коду искомая программа запущена, это путь до неё найдёт
|
|
#5
|
|||
|
|||
|
Цитата:
|
|
#6
|
||||
|
||||
|
на примере OLE Excel:
-ищем в реестре в "HKEY_CLASSES_ROOT" раздел "Excel.Application" -если нашли идем в раздел "CLSID" -если зашли берем параметр по умолчанию: "{00024500-0000-0000-C000-000000000046}" -ищем в реестре в "HKEY_CLASSES_ROOT\CLSID" раздел "{00024500-0000-0000-C000-000000000046}" -если нашли идем в раздел "LocalServer32" -если зашли берем параметр по умолчанию: "C:\PROGRA~1\MICROS~2\Office14\EXCEL.EXE /automation" по сути это обратный процесс регистрации объекта автоматизации |