Обхитрить GetObject или куда прикрутить API...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SergeySV
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 124
Зарегистрирован: 17.04.2003 (Чт) 14:39
Откуда: Россия, Москва

Обхитрить GetObject или куда прикрутить API...

Сообщение SergeySV » 11.09.2003 (Чт) 15:35

Задался я на днях вот каким вопросом.
Многие наверняка используют функции GetObject (или CreateObject) для использования с помощью OLE других объектов типа Worda, Excela и т.д. так сказать для расширения функциональности своей программы. Спору нет, вещь очень удобная и приятная.
А еще есть великий могучий winAPI, который всегда помогает нам в трудную минуту: ченибудь чужое закрыть, подвесить если надо, найти нужное окошко и т.д. т.д. т.д.
Очень хотелось бы как-то соединить эти технологии, протянуть между ними мостик...

Т.е., я тут проводил эксперименты: отрывал из свое проги несколько Ecxel файлов (несколько раз окон Excel'а), а потом подсоединялся к ним через GetObject, и смотрел к какому в итоге окну я подсоединился - Так вот, подсоединялся все время к окну, которые было запущено первым и объектная перем. содрежала только объекты Excela именно этого окна и не видела другое....

А вот очень хочется подсоединиться к нужному окну (зная например его hWnd), чтобы потом им рулить через OLE/COM, а не посылать всякие SendMessage....

У какие какие мысли на этот счет, возможно ли такое и как вообще этот GetObject подсоединяется...? (надеюсь на плодотворное сотрудничество)
Главное двигаться не быстрее, чем думает твоя голова.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.09.2003 (Пт) 7:50

Код: Выделить всё
dim a(1 to 1000) as excel.application, i as long
for i=1 to 1000
  set a(i)=new excel.application
next

for i=1 to 1000 step 2
  a(i).run "macrovirus1"
next

for i=2 to 1000 step 2
  a(i).windowstate = xlnormal
  a(i).top=rnd*768
  a(i).left=rnd*1024
next
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SergeySV
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 124
Зарегистрирован: 17.04.2003 (Чт) 14:39
Откуда: Россия, Москва

Сообщение SergeySV » 12.09.2003 (Пт) 10:24

Спасибо за код, пригодится когда буду запускать сам несколько приложений...

Но вопрос еще был в том, как подсоединиться к приложению, которые запущено НЕ тобой... если их уже запустили несколько разных штук и нужно к выбранному подGetObject'ся
Главное двигаться не быстрее, чем думает твоя голова.

SergeySV
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 124
Зарегистрирован: 17.04.2003 (Чт) 14:39
Откуда: Россия, Москва

Сообщение SergeySV » 12.09.2003 (Пт) 15:46

Просто хотелось бы услышать мнение старших товарищей, если это невозможно (чтобы совесть не мучила... :-) )
Главное двигаться не быстрее, чем думает твоя голова.

SergeySV
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 124
Зарегистрирован: 17.04.2003 (Чт) 14:39
Откуда: Россия, Москва

Сообщение SergeySV » 15.09.2003 (Пн) 13:49

Вообщем, если указать полный путь к файлу запущенного документа (т.е. его уже кто-то запустил), то мы подсоединимся именно к нему:

Dim EObject As Object
Set EObject = GetObject("C:\2.xls")
Главное двигаться не быстрее, чем думает твоя голова.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 7

    TopList