Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Получить доступ к процессу xls, запущенному последним [Delphi, Windows]


Neada   (16.01.13 11:22

Есть программа, которая формирует 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, но получаю всегда только ссылку на первый


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо