Доброй ночи!
1. Есть в реестре список установленных программ. Там путь к их папкам должен быть, а значит, и оперу можно найти, где бы ни была установлена. И вдобавок, она всегда на одном и том же месте будет, если не ошибаюсь. Т. е. поиск по реестру не нужен. .
2. PID процесса Оперы получить и по нему место хранения файла. Вот, например:
uses tlhelp32;
{...}
function GetPathProcess(PID: Cardinal): string;
var
hSnapshot: THandle;
lpme: TModuleEntry32;
begin
SetLength(Result, 0);
hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PID);
if hSnapshot = -1 then
RaiseLastWin32Error;
lpme.dwSize := SizeOf(lpme);
if Module32First(hSnapshot, lpme) then
begin
result := lpme.szExePath;
end;
end;
Ну а как сам PID получить - я вообще молчу, этого в интернетах - целая гора.
Можете, например, вот здесь почитать:
[ссылка заблокирована по решению администрации проекта]. ru/delphi-beginners/thread283947.html (пробел уберите)
http://otvet.mail.ru/question/6492248 ---другой вариант, по дескриптору hWnd окна
Удачи Вам и до свидания