-
Есть программа, которая формирует xls (формирует, но не сохраняет куда-либо). Надо подключиться к этому процессу, с сформированной книге и поработать с ней. Использую GetActiveOleObject - но не подходит, когда перед запуском сторонней программы были уже запущены процессы xls
-
FindWindow() + AccessibleObjectFromWindow()
-
Перебирай существующие объекты, пока не наткнешься на нужный тебе. Правда, фиг знает, как ты поймешь, что это именно тот, который тебе нужен.
-
> Правда, фиг знает, как ты поймешь, что это именно тот, который > тебе нужен.
в этом то и проблема
-
function GetAllWorkBooks:TStringList; var i:integer; begin try Result:=TStringList.Create; for i:=1 to MyExcel.WorkBooks.Count do Result.Add(MyExcel.WorkBooks.Item[i].FullName);
except MessageBox('ошибка',MB_OK+MB_ICONERROR); end; end;
... var MyExcel:OleVariant; ROT:IRunningObjectTable; Enm: IEnumMoniker; Mon: IMoniker; Fet: Longint; Unk: IUnknown; App: ExcelXP._Application; begin kol:=0; GetRunningObjectTable(0,Rot); Rot.EnumRunning(Enm); while Enm.Next(1,Mon,@Fet)=S_OK do begin Rot.GetObject(Mon,Unk); Unk.QueryInterface(_Application,App); if App<>nil then begin MyExcel:= App; //вывожу названия книг for i:=1 to MyExcel.WorkBooks.Count do ListBox1.Items.Add(GetAllWorkBooks[i-1]); end; end;
выводит только книги первого процесса xls
-
то есть если запущено несколько процессов xls, но получаю всегда только ссылку на первый
|