Как получить содержимое Label из другого приложения

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 27.02.2008 (Ср) 17:09

awl100Alex
Сообщать об этом не обязательно, т.к. должно придти уведомление на ящик электронной почты и при посещении сайта показывается окно в котором сообщается что есть непрочитанные личные сообщения
:wink:
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 27.02.2008 (Ср) 17:23

а что это за программа такая, откуда все так стремятся выдирать данные? :)

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Сообщение awl100Alex » 27.02.2008 (Ср) 17:55

У каждого своя... ;) Привет, jangle!! :) Твоя библиотека пользуется популярностью! :)

Igor_123

Прошу прощения... учту в следующий раз. :)

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 27.02.2008 (Ср) 18:30

Почему все? :shock:
Стремятся те кому интересно ;-)
А программа, насколько я понял, отображает какие-то важные данные. И поскольку разработчики не предусмотрели ни какого другого способы получения этой информации, кроме как переписывать её на бумажку руками, товарищу awl100Alex
надоело заниматся ерундой и он решил автоматизировать процесс. И судя по всему у него удачно все сложилось :D
С чем его и поздравляю :)

И тебе не стыдно издеватся!
Я писал, писал, а потом увидел что ты стоял можно сказать у истоков проблемы :)(практически был автором ТОЙ программы) :D
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Сообщение awl100Alex » 28.02.2008 (Чт) 1:14

Igor_123, блин!.. :( Не заставляй меня оправдываться...
Ни над кем я не издеваюсь! Стал бы я уважаемым людям морочить голову от нефиг делать! Лопатить 3(!) форума, ссылки давал, зайди и сам посмотри... Все программы на Делфях, что я давал, примерно(!) раскрывали суть самой проблемы работы с LABEL(!) на Делфи, и об этом я не раз писал, и предупреждал! Сначала мне помогли написать... потому что раньше именно(!) с Делфи не сталкивался, и инсталлятора у меня тоже не было, но потом стал пробовать свои силы в нем и то, что получилось тоже выложил... как образцы для эксперимента. Раньше, еще в ВУЗе, изучал Pascal и писал на нем проги под DOS, поэтому написать маленькую примитивную(!) программку на Делфи оказалось не так сложно. :) Потом, точно такую же написал на VB. Автором «...ТОЙ программы...» я не являюсь! Выкладывать ее на форум не имею права! Да и если бы выложил, бестолку бы... Эта программа является сетевым клиентом и работает она только(!) в паре со своим сервером в локальной сети конкретной организации. В Label этого клиента отображаются данные о лимите трафика, которые, понятно что, все время меняются. И разработчики действительно(!) не предусмотрели, :( что появится «...товарищ awl100Alex...», которому понадобится получать эти значения трафика и заносить их в базу данных. Там еще лимиты связаны с паролями... Вообщем, я не могу тут всего объяснять!
«...переписывать её на бумажку руками...» - кроме шуток... ты не далек от истины! И я действительно решил это все автоматизировать.
Как я узнал, что этот клиент написан на Делфях? Очень просто: еще до обращения на форумы, пробовал докопаться до его Label. Скачал прогу декомпилятор PE Explorer ( http://www.izone.ru/other/programing/pe-explorer-screen.htm ) и она мне сразу сообщила, что данная программа написана на Делфях 6. Вот и все!..
Надеюсь, мне больше не нужно будет доказывать презумпцию своей невиновности.

P.S.
Иначе, я пришлю тебе своих секундантов! ;))))) (шучу, конечно...)

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Сообщение awl100Alex » 28.02.2008 (Чт) 1:51

Интересно, что в проге на Делфи функцией
GetStr=GetStr+"(" & STR$(x) & " " & STR$(y) & ")"
возвращаются координаты только того текста, который «накладывается» на объект оконного типа. То есть, например, я могу получить таким образом координаты текста какой-нибудь кнопки. А вот сами Label на форме возвращается
x=0; y=0
... ...???!!!...
Почему, пока не понятно... :(

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 28.02.2008 (Чт) 10:38

awl100Alex :roll: вообще-то весь мой пост был адресован jangle, и фразу насчет издевательства я произнес, потому, что перепутал его с gjghjc и думал он не в курсе обсуждения :(

А к тебе вообще никаких претензий не было :)
У тебя возникла проблема и ты её решил! С чем я тебя и поздравил, потому что задача была не просто взять спец-функцию и применить, а провести исследование, в чем тебе помогли участвовавшие в обсуждении.

Насчет последнего поста о координатах я не совсем понял
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Сообщение awl100Alex » 28.02.2008 (Чт) 17:15

Значит, возникло недоразумение?! Ладно, проехали… ;)

Насчет координат… я уже писал раньше (см. 3 страницу).
Дело в том, что когда я в HookD.dll пытаюсь получить координаты x, y Label строкой GetStr=GetStr+STR$(x) & " " & STR$(y), то почему-то возвращаются нули…
http://bbs.vbstreets.ru/download.php?id=6466

Вообщем, мы тут с maxboot пока разбираемся… Ничего определенного сказать пока не могу.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 28.02.2008 (Чт) 19:32

А ты об этом :)
Попробуй почитать об окнах вообще и о координатах в них в частности :)
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Сообщение awl100Alex » 28.02.2008 (Чт) 20:09

А что мне это даст??

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 29.02.2008 (Пт) 8:09

Twister
Ты про меня не забыл?
Нет. А вот про тот файл, который нужно посмотреть забыл совсем, т.к. нет времени даже побриться. :) Ты, наверное, сам быстрее разберешся...
А я все практикую лечение травами...

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Сообщение awl100Alex » 29.02.2008 (Пт) 12:08

Twister
Ладно... намек понял... Будем разбираться сами... :study:

maxboot
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 27.02.2008 (Ср) 13:19

Сообщение maxboot » 02.03.2008 (Вс) 15:24

Вопрос к Jangle!
Jangle подскажи пожалуйста как можно заставить hookd.dll работать в win98? на xp все прекрасно работает, но если запускаю на 98-й винде выдает Error in VirtualProtect и закрывается. Спасибо.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 02.03.2008 (Вс) 19:21

maxboot писал(а):Вопрос к Jangle!
Jangle подскажи пожалуйста как можно заставить hookd.dll работать в win98? на xp все прекрасно работает, но если запускаю на 98-й винде выдает Error in VirtualProtect и закрывается. Спасибо.


Надо будет подумать. Хотя "живую" Win98, видел в последний раз лет 5 назад. Никакого резона, использовать эту ОС сейчас нет.

maxboot
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 27.02.2008 (Ср) 13:19

Сообщение maxboot » 02.03.2008 (Вс) 21:20

Написал программку, которая используя твою hookd.dll позволяет согласовать программу по управлению климатом и программу по управлению котельной, управление котельной стоит на компьютере с ХР, а климатом стоит на 98-й. Подумай пожалуйста на досуге, если будет время, а то прийдется думать о замене железа.........

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 02.03.2008 (Вс) 22:07

maxboot писал(а):Написал программку, которая используя твою hookd.dll позволяет согласовать программу по управлению климатом и программу по управлению котельной, управление котельной стоит на компьютере с ХР, а климатом стоит на 98-й. Подумай пожалуйста на досуге, если будет время, а то прийдется думать о замене железа.........


На самом деле, проще туда поставить NT4 или Win2000. Если на том железе работает Win98, то заработает и NT

maxboot
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 27.02.2008 (Ср) 13:19

Сообщение maxboot » 10.03.2008 (Пн) 21:56

jangle привет!
Еще такой вопрос, а как поставить hook только на конкретное окно в конкретной программе. а не на все окна этой программы? А то когда происходит перерисовка, то система немного подтормаживает в других окнах.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 11.03.2008 (Вт) 10:27

Еще такой вопрос, а как поставить hook только на конкретное окно в конкретной программе. а не на все окна этой программы? А то когда происходит перерисовка, то система немного подтормаживает в других окнах.


Фильтровать класс окна + его заголовок

maxboot
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 27.02.2008 (Ср) 13:19

Сообщение maxboot » 11.03.2008 (Вт) 23:11

Натолкни пожалуйста где рыть конкретно в hookd.dll, спасибо....

maxboot
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 27.02.2008 (Ср) 13:19

Сообщение maxboot » 13.03.2008 (Чт) 14:38

jangle Я наверное не так изъяснился, смотри функция
SetHookProc обрабатывает все события, когда происходит textoutW, т.е. во всех окнах всех программ, т.е. в mystring попадают абсолютно все данные, которые были в textoutW и только если находится нужное окно с нужным хэндлом "hProcess", то только тогда данные передаются приложению с заголовком "My Hook", так вот вопрос в чем, чтобы обрабатывался не весь textoutW и его содержимое присваивалось mystring, а mystring присваивалось значение textoutw только при прорисовке окна, которое используется в hProcess, потому как, когда обрабатываются все окна всей системы, то происходит хорошее торможение всех программ по крайней мере на той слабой машине.

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Сообщение awl100Alex » 18.03.2008 (Вт) 20:10

maxboot
Так, как ты хочешь не получится... jangle потому и молчит.
Перехватывается весь textoutW, а твое дело отсеять лишнее, другого пути нет.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 18.03.2008 (Вт) 21:53

jangle потому и молчит.


Я вышенаписанные посты "проглядел", отвечу на них завтра

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 18.03.2008 (Вт) 22:03

maxboot писал(а):Натолкни пожалуйста где рыть конкретно в hookd.dll, спасибо....


Вот здесь ловится класс окна а потом его имя

Код: Выделить всё
   hProcess = FindWindow("TForm1", ByCopy "Form1")
    If hProcess=GUI.hwndActive And hProcess<>0  Then
           hProcess = FindWindow("", ByCopy "MY HOOK")

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 18.03.2008 (Вт) 22:58

maxboot писал(а):jangle Я наверное не так изъяснился, смотри функция
SetHookProc обрабатывает все события, когда происходит textoutW, т.е. во всех окнах всех программ, т.е. в mystring попадают абсолютно все данные, которые были в textoutW и только если находится нужное окно с нужным хэндлом "hProcess", то только тогда данные передаются приложению с заголовком "My Hook", так вот вопрос в чем, чтобы обрабатывался не весь textoutW и его содержимое присваивалось mystring, а mystring присваивалось значение textoutw только при прорисовке окна, которое используется в hProcess, потому как, когда обрабатываются все окна всей системы, то происходит хорошее торможение всех программ по крайней мере на той слабой машине.


Cтранно, сейчас запустил этот пример на моем старом компе, PII-450 128 МБ ОЗУ, ничего не тормозит, даже намеков на тормоза нет

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Сообщение awl100Alex » 19.03.2008 (Ср) 18:53

maxboot
Попробуй переустановить систему, может эти все тормоза, о которых ты говоришь, из-за глюков в самой системе, а не машины...

maxboot
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 27.02.2008 (Ср) 13:19

Сообщение maxboot » 23.03.2008 (Вс) 16:59

Система голая, только установил на ней winxp, поменял там проц на более мощный и добавил оперативки до 256. Получается такая ерунда, в программе, которой отлавливаются лабелы их используется очень большое количество, и каждый раз когда происходит прорисовка идет сильный тормоз, дело в том, что с программой помимо того, что она выводит на экран значения в лабелы еще и постоянно работают (закрывают-открывают окна) чем каждый раз вызывают прорисовку, вот ниже приведу 2 примера, один для работы без запуска программы для вылавливания данных из label и другой с ее запуском. Т.е. не то, чтобы тормозит, а медленно прорисовываются окна. На примера видно, что при первом варианте, окна быстро прорисовались, на втором варианте, идет очень медленная прорисовка (как бы с перебиранием всех лабелов) и это несмотря на то, что я ставлю хук только на окно "#3 Climat1 - .................."
Последний раз редактировалось maxboot 23.03.2008 (Вс) 17:10, всего редактировалось 3 раз(а).

maxboot
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 27.02.2008 (Ср) 13:19

Сообщение maxboot » 23.03.2008 (Вс) 17:02

1.jpg Без отлова лабел, 2.jpg при отлове лабел
[/img]
Вложения
1.JPG
без отлова
1.JPG (215.86 Кб) Просмотров: 10084
2.JPG
с отловом
2.JPG (90.96 Кб) Просмотров: 10085
Последний раз редактировалось maxboot 23.03.2008 (Вс) 19:33, всего редактировалось 2 раз(а).

maxboot
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 27.02.2008 (Ср) 13:19

Сообщение maxboot » 23.03.2008 (Вс) 17:17

Может сделать в программе на VB таймер по которому данные будут обновляться через определенное время, при этом после того как таймер отсчитает нужное время, он отправит запрос на перерисовку окна дождеться получения данных из этого окна и снова будет отсчитывать время для следующего запроса? Как осуществить запрос из VB на хук в hookd.dll на время получение данных из лабел и после этого послать команду в hookd.dll для остановки опроса лабелов?

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 23.03.2008 (Вс) 22:20

Т.е. проблема только в медленной прорисовке?

maxboot
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 27.02.2008 (Ср) 13:19

Сообщение maxboot » 23.03.2008 (Вс) 22:45

Да именно в медленной прорисовке, я посмотрел в процессах, действительно процессор не загружает программа, но все очень медленно прорисовывается.... Как можно устранить?

Пред.След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList