Конференция "Corba" » Получить доступ к процессу xls, запущенному последним [Delphi, Windows]
 
  • Neada (16.01.13 11:22) [0]
    Есть программа, которая формирует xls (формирует, но не сохраняет куда-либо). Надо подключиться к этому процессу, с сформированной книге и поработать с ней. Использую GetActiveOleObject - но не подходит, когда перед запуском сторонней программы были уже запущены процессы xls
  • clickmaker © (16.01.13 23:55) [1]
    FindWindow() + AccessibleObjectFromWindow()
  • Cobalt © (17.01.13 11:16) [2]
    Перебирай существующие объекты, пока не наткнешься на нужный тебе.
    Правда, фиг знает, как ты поймешь, что это именно тот, который тебе нужен.
  • Neada (17.01.13 12:23) [3]

    > Правда, фиг знает, как ты поймешь, что это именно тот, который
    > тебе нужен.

    в этом то и проблема
  • Neada (17.01.13 16:22) [4]
    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
  • Neada (17.01.13 16:23) [5]
    то есть если запущено несколько процессов xls, но получаю всегда только ссылку на первый
 
Конференция "Corba" » Получить доступ к процессу xls, запущенному последним [Delphi, Windows]
Есть новые Нет новых   [118430   +14][b:0][p:0]