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

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

Сообщение Igor_123 » 05.02.2008 (Вт) 16:37

Я буду пытаться присваивать значение обычным способом, но недавно пришлось эмулировать работу ЖК дисплея и там цифры были битмапами.
Так что задачи бывают разные :)
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

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

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

Сообщение awl100Alex » 06.02.2008 (Ср) 0:17

Похоже, я рано «ушел»... :) Здесь разгорелась такая дискуссия! Разрешите еще немного поучаствовать... ;)

alibek
Ты писал:
«Это уже не так. Хакер написал проект для того, чтобы с минимальными сложностями делать именно NativeDLL.» - я не совсем понял, что ты имел в виду??? Какой Хакер?? Что за проект?? Объясни...

Twister
Был на твоем сайте. Впечатляет!..
После этого, еще раз внимательно перечитал форум, на который ты меня направил, в начале этого топика: «...получение значений из грида...» В принципе, темы очень схожи, как на мой взгляд. Но хотелось бы сразу сделать небольшое лирическое отступление, для торжественной, так сказать, речи для ВСЕХ...

МАНИФЕСТ...
Если Вы заметили... обычно люди, задающие тот или иной вопрос на форумах, в подавляющем(!) своем большинстве, НЕ являются профессионалами-полиглотами алгоритмических языков. А как раз наоборот... – спрашивают совета у таких специалистов, и желательно с примерами – по ним всегда легче(!) и, как правило, проще(!) разобраться, и «докопаться» до сути вещей. Но когда же в ответ на свой вопрос, они получают высококвалифицированный жестко-теоретический удар(!), то ничего не остается делать, как признаться самому себе, и смирится в своей беспомощности в решении той проблемы, с которой столкнулись. :( Именно это и произошло с топикстартером Алексеем К. В своем вопросе о получении значений из грида, был просто «раздавлен» теоретическим ударом! После которого благополучно сдался и практически закрыл тему. :( Специалистам, которые дают ответ ВАЖНО(!) понять, что они помогают не только лично Алексею К., Васе Сидорову, или Пете Иванову... Они помогают ВСЕМ(!), кого рано или поздно заинтересует этот вопрос (а таких может оказаться сотни, или даже тысячи(!)..), и, запустив Google, или зайдя сразу на соответствующий сайт, найдет нужную тему с вариантами решений от знающих людей. Вспомните себя... ставшие профессионалами или идущие на пути к этому! Только ли из книжек черпали Вы свои знания???!!!

Понятно, что не всегда есть время, но Twister, ведь ты же сам написал: «Эксперименты я ставил на Delphi7 под Вистой...» – значит, работал с уже написанным кодом! Почему же не выложил EXE-шники, листинги на сайте, а только дал теорию??? Конечно, понятно, что код работает нестабильно, и якобы нет резона... Но вдруг кто-нибудь ответил бы потом, что там... нужно поменять (условно...) «А» на «Б», и тогда получится все, как надо.
jangle предложил практическое(!) решение, и доказал(!), что оно работает! Ну, может быть, не все так идеально, как кажется, не спорю, я пока только изучаю... Но все же благодаря ему, один вариант решения уже есть!

Twister
На твоем сайте есть очень интересные статьи на тему работы с хэндлами. Все очень подробно расписано, и есть примеры!.. Как писалось ранее: VCL разделяет список объектов на оконные (имеющие хэндл), и неоконные (без хэндла). Манипуляции с первым... у тебя в статьях все хорошо описано, а вот со вторым... имеются большие пробелы! Как «продолжение» темы хэндлов... предложи свой вариант решения данной проблемы (только НЕ чистую теорию!), напиши статью, и размети ее на своем сайте. А здесь дай ссылку туда – уверен(!), что количество посещений твоего сайта возрастет в N-ное количество раз!

И последнее...
Twister, у тебя на сайте в разделе «Sys Files», на каждую ОС лежат какие-то архивы – это патчи обновлений, или???.. Там ничего не подписано. :( Извини, что спрашиваю здесь...

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

Сообщение Twister » 06.02.2008 (Ср) 8:13

Код: Выделить всё
Twister - исходники надо выкладывать, а не бинарный EXE. Где гарантия, что просто битмап с текстом не скопировал на DC?
Первый метод.
Второй же основан на том, что jangle ошибся относительно того, что TextOutW последняя инстанция для вывода текста. На самом деле их только в юзермоде еще несколько, неговоря уже о ядре.

Я просто что хочу доказать - в винде есть тыща и один способ вывести текстовую графику на DC. И чтоб заявлять хоть о какой-то универсальности своего метода, необходимо учесть в реализации хотя бы большую часть из них. В "произведении" jangle этого нет.

у тебя на сайте в разделе «Sys Files», на каждую ОС лежат какие-то архивы – это патчи обновлений
Это просто коллекция системных файлов для разных версий винды. Пригождается при использовании недокументированных возможностей в своих программах.
А я все практикую лечение травами...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.02.2008 (Ср) 8:36

awl100Alex писал(а):Какой Хакер?? Что за проект??

Смотри тут:
http://bbs.vbstreets.ru/viewtopic.php?t=34902

Его я не проверял и не смотрел, так что не знаю, применимо ли это к твоему случаю. Но идея остроумная.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение jangle » 06.02.2008 (Ср) 11:13

Twister писал(а):Второй же основан на том, что jangle ошибся относительно того, что TextOutW последняя инстанция для вывода текста. На самом деле их только в юзермоде еще несколько, неговоря уже о ядре.


Каких способов? Перечисли

Я просто что хочу доказать - в винде есть тыща и один способ вывести текстовую графику на DC.


Нету там тысячи способов, Windows API все таки не дураки проектировали

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

Сообщение Twister » 06.02.2008 (Ср) 12:58

jangle
Как не трудно было догадаться, речь уже не идет о Windows API.
Хотя о твоем высказывании по поводу разумности проектировки Windows API можно немного поспорить. Делали его, действительно, не дураки, но так как одной из главных целей при проектировке была совместимость, то мы имеем возможность лицезреть забавные цепочки, которые проходит вызов какой-нибудь функции верхнего уровня, например:
Kernel32(exported api) -> Kernel32(private fn_1) -> Kernel32(private fn_2) -> Kernel32(private fn_[n]) -> ntdll(exported api) -> ntdll(cys call) -> и дальше в ядре подобная картина.
Отсюда и "тыща" методов рисования текста. Подробнее:

Gdi32 экспортирует несколько функций: TextOutA, TextOutW (это те, о которых ты говорил как о последней инстанции). Есть еще ExtTextOutA, ExtTextOutW которые никак(!) не используют предыдущие. Все эти функции вызывают неэкспортируемую _ExtTextOutInternalA/W. _ExtTextOutInternalA/W в свою очередь вызывает _NtGdiExtTextOutW, которая представляет из себя переходник к сервисам ядра:
Код: Выделить всё
; Для WinXP
.text:77F17E3F                 mov     eax, 1092h
.text:77F17E44                 mov     edx, 7FFE0300h
.text:77F17E49                 call    dword ptr [edx]
.text:77F17E4B                 retn    24h

Как видишь, способов действительно тыща и это только в юзермоде!

Я, чтобы обломать твой универсальный метод, рисовал текст с помощью _ExtTextOutInternalA, хотя можно было запихать в программу еще парочку методов.

Теперь об этой самой _ExtTextOutInternalA. Я не нашел нигде ее описания, но IDA и gdi32.pdb немного помогли в расшифровке ее параметров:
Код: Выделить всё
ExtTextOutInternal: function (hDC,
                                nXStart,
                                nYStart,
                                Unk1,
                                Unk2: DWORD;
                                lpString: PChar;
                                cbString, //кол-во выводимых символов
                                Unk3,
                                Unk4: DWORD): DWORD; stdcall;

Поиск ее адреса осуществляется с помощью диззасемблирования на лету кода функции TextOutA:
Код: Выделить всё
var
  pCode: pointer;
  hGDI, Len, Dif: DWORD;
  pOpcode: pbyte;
begin
hGDI := GetModuleHandle('Gdi32.dll');
if hGDI = 0 then
  hGDI := LoadLibrary('Gdi32.dll');
pCode := GetProcAddress(hGDI, 'TextOutA');
repeat
  Len := SizeOfCode(pCode, @pOpcode);
  if pOpcode^ <> $E8 then
    pCode := pointer(DWORD(pCode) + Len);
until (Len = 5) and (pOpcode^ = $E8);
asm
  mov   eax, pCode
  inc   eax
  mov   eax, dword[eax]
  mov   Dif, eax
end;
ExtTextOutInternal := pointer(DWORD(pCode) + Dif + 5);
end;


Я надеюсь что я не зря все это расписывал и ты, jangle, согласишься со мной по поводу неуниверсальности твоего метода.
Если требуется отловить все юзермодные TextOut-вызовы, тебе нужно хучить сервис NtGdiExtTextOutW в ShadowSDT, но это уже тематика другого форума...
А я все практикую лечение травами...

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

Сообщение jangle » 06.02.2008 (Ср) 14:24

Gdi32 экспортирует несколько функций: TextOutA, TextOutW (это те, о которых ты говорил как о последней инстанции). Есть еще ExtTextOutA, ExtTextOutW которые никак(!) не используют предыдущие.


ExtTextOutA, ExtTextOutW - это новые версии тех-же TextOutA, TextOutW, само их название (Ext)endent говорит, что они введены только в последних версиях Windows. Однако, разработчики сред программирования (C++, Delphi, VB) стараются, чтобы их программы работали под любой версией виндов.
Поэтому, находясь в здравом уме и трезвой памяти не станут использовать API функцию, которая, работает например, только начиная с Windows2000. Тем более, в таком примитивном компоненте как LABEL.

Кстати, при желании изменить программу и поставить хук на ExtTextOutW - минутное дело. Принцип от этого не меняется.

Я надеюсь что я не зря все это расписывал и ты, jangle, согласишься со мной по поводу неуниверсальности твоего метода.


В ситуации с прикладной программой написанной на Дельфи, VB, C++, метод перехвата TextOut, как раз универсальное решение.
Вообще трудно представить себе программиста, который специально выводит в LABEL, текст особо извращенным способом. Чтобы создать потенциальные проблемы, по возможному грабингу выводимой информации. Уверен, что 99,9% программистов об этом даже не подумают, а просто присвоят леблу текст и все

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

Сообщение awl100Alex » 06.02.2008 (Ср) 14:32

Twister
Если все именно так, как ты написал, то у меня к тебе один вопрос:
Следуя твоей логике, компания Microsoft разработала все эти методы вывода текста для соблюдения совместимости между различными аппаратными платформами. Так?!.. А если свести это все к решению локальной задачи: есть конкретный компьютер, на нем установлен Windows XP, есть конкретная программа, которая выводит значения в Label своего окна.
Как я могу узнать каким именно способом в данном конкретном(!) случаи выполняется вывод в Label???

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

Сообщение awl100Alex » 06.02.2008 (Ср) 14:36

alibek
Спасибо за ссылку... :)

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

Сообщение Twister » 06.02.2008 (Ср) 14:59

Следуя твоей логике, компания Microsoft разработала все эти методы вывода текста для соблюдения совместимости между различными аппаратными платформами. Так?!..
Рассказывая про политику мелкомягких я имел ввиду общий случай. В нашем же случае цепочка не сильно длинная. Ответ на вопрос - скорее всего да.
Как я могу узнать каким именно способом в данном конкретном(!) случаи выполняется вывод в Label???
Наконец-то ты дошел до истины, которую я уже два дня пытаюсь втолковать. Способ один - изучение конкретной программы (наблюдение за поведением, дизассемблирование). Это называется подготовка целенаправленной атаки.
А я все практикую лечение травами...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 06.02.2008 (Ср) 16:24

jangle писал(а):ExtTextOutA, ExtTextOutW - это новые версии тех-же TextOutA, TextOutW, само их название (Ext)endent говорит, что они введены только в последних версиях Windows. Однако, разработчики сред программирования (C++, Delphi, VB) стараются, чтобы их программы работали под любой версией виндов.
Поэтому, находясь в здравом уме и трезвой памяти не станут использовать API функцию, которая, работает например, только начиная с Windows2000.

Данные функции вполне себе работают начиная с Windows NT 3.1 и Windows 95. Так что ошибочка вышла.
Весь мир матрица, а мы в нем потоки байтов!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.02.2008 (Ср) 17:31

Twister, ты еще забыл про один гораздо более простой способ. В приложении могут поддерживаться свои собственные шрифты (растровые для простоты) и программа будет выводить текст своими собственными функциями.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение Twister » 07.02.2008 (Чт) 9:26

alibek
Забыл. Но это только доказывает мою правоту... :wink:
А я все практикую лечение травами...

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

Сообщение awl100Alex » 08.02.2008 (Пт) 18:24

awl100Alex писал(а):Twister
«...если прога не Дельфовая?» - это тоже НЕ важно! Посмотри в библиотеку HookD.Dll... В строке, где определяется указатель перехватываемого окна:
hProcess = FindWindow("TForm1", ByCopy "Form1") – меняешь имя класса Дельфийской проги "TForm1", а также текст заголовка "Form1", на имя класса, скажем, проги на VB – «ThunderRT5Form», соответственно "Form1" (на примере Proba.rar см. выше...), и перехват ставится уже на ее. :)

К тому же через координаты X,Y подставной функции «MyTextOut» можно задавать какой именно Label в стороннем приложении будет перехватываться!


Вынужден извинятся...
Тут я, как говорится, поспешил с выводами. :( Twister прав! В каждом конкретном случаи, нужно точно знать, каким(!) именно способом выводится текст в Label. Немного поэкспериментировал с кодами и увидел, что прога перехвата от jangle работает в основном с Дельфовскими образцами... (замена классов «TForm1» (Delphi) на «ThunderRT5Form» (VB) не приводит к достижению нужной цели). :(

В принципе, задача, которую я ставил, практически разрешилась, но есть одна непонятная деталь...

jangle
Мои попытки «прицелиться» к нужной Label не увенчались успехом. :(
В функции MyTextOut библиотеки хука, пробовал получить значения координат... заменил строки:
GetStr=GetStr+MyString
на
GetStr=GetStr+STR$(x) & " " & STR$(y)
и вот, что получается (см. рисунок)... :(
Вложения
XY.jpg
Координаты X и Y Label2...
XY.jpg (26.38 Кб) Просмотров: 11488

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

Сообщение awl100Alex » 08.02.2008 (Пт) 18:33

Почему в TextOut X и Y передаются нули вместо координат??? :(
Получается так, что нужную информацию мне буквально нужно будет выуживать из общей кучи перехваченного текста... :( Как получить координаты нужной Label???

Вот листинг и сама подопытная прога на Делфи...

Код: Выделить всё
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Timer1: TTimer;
    Delphi: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure StartTime(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Timer1Timer(Sender: TObject);
  var
  DateTime:TDateTime;
  begin
   Label2.Caption:=TimeToStr(Time);
  end;

procedure TForm1.StartTime(Sender: TObject);
begin
  Form1.Refresh;
  if Button1.Caption='Старт' then
   begin
    Timer1.Enabled:=True;
    Button1.Caption:='Стоп';
   end
  else
   begin
    Timer1.Enabled:=False;
    Button1.Caption:='Старт';
    Label2.caption:='Label2';
   end
end;
end.
Вложения
Delphi.rar
Экспериментальная прога на Делфях...
(132.2 Кб) Скачиваний: 270

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

Сообщение awl100Alex » 08.02.2008 (Пт) 18:35

Twister
Мне просто стало интересно, каким же это способом рисуется Label в VB??? Ты можешь вскрыть и посмотреть?!.. Пожалуйста...
Вложения
VB.rar
Экспериментальная прога на VB...
(3.35 Кб) Скачиваний: 253

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

Сообщение awl100Alex » 08.02.2008 (Пт) 18:42

Вот, что получается с перехватом в Делфи...
Вложения
Result.jpg
Result.jpg (24.55 Кб) Просмотров: 11475

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

Сообщение awl100Alex » 13.02.2008 (Ср) 19:25

Хм.. Как-то неожиданно закончились все обсуждения... :(

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

Сообщение Twister » 14.02.2008 (Чт) 14:35

Хм.. Как-то неожиданно закончились все обсуждения...
Лично я доказал что хотел, вот и молчу.
Твой файл я скачал, но еще ни чего не смотрел - нет времени.
А я все практикую лечение травами...

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

Сообщение jangle » 14.02.2008 (Чт) 15:30

awl100Alex писал(а):Хм.. Как-то неожиданно закончились все обсуждения... :(


Все, что нужно уже сказано. Остается только писать код.. :)

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

Сообщение awl100Alex » 15.02.2008 (Пт) 16:54

Twister
Ок. :) Буду еще периодически мониторить здесь – ждать ответа, как появится время, посмотри... буду очень признателен. Заранее спасибо.

jangle
Да уже все почти готово... :) Ты мне здорово помог, спасибо! :)

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

Сообщение maxboot » 27.02.2008 (Ср) 13:29

Уважаемый Jangle, Twister, Alex, господа!!!
Воспользовался вашей информацией, очень помогла,
но возникло еще два вопроса:
Когда hookD.dll выдирает лабел из стороннего приложения и посылает моему, то при каждой перерисовке окна стороннего приложения, данные последовательно добавляются к полю ThunderRT6TextBox моего приложения, так вопрос собственно состоит в том, как подправить hookD.dll, чтобы данные не добавлялись, а обновлялись, т.е. если при перерисовке окна стороннего приложения, данные изменились, то, чтобы они изменились и в моем приложении, а не добавились последовательно.


И второй вопрос, каким образом можно из VB6 послать комманду на принудительную прорисовку окна стороннего приложения, чтобы принудительно сработала hookD.dll? Заранее премного благодарен за ответы, извините, если где невнятно задаю вопросы, новичок.... :-) Буду рад, если покажите на примерах.

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

Сообщение awl100Alex » 27.02.2008 (Ср) 14:48

Ответ на первый вопрос:

В подставляемой функции MyTextOut библиотеки хука, вместо:
GetStr=GetStr+MyString
напиши просто:
GetStr=MyString

Ответ на вопрос второй:

Лично в моем случаи данные Label стороннего приложения и так постоянно меняются, поэтому такой проблемы нет. Но если нужно, то через SendMessage послать окну команду перерисовки Const WM_PAINT = &HF.
Если не ошибаюсь, то кажется так...
SendMessage(hWnd, WM_PAINT, 0&, 0&)

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

Сообщение awl100Alex » 27.02.2008 (Ср) 14:52

hWnd - хэндл стороннего окна соответственно... ;)

Twister
Ты про меня не забыл? ;)

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

2Alex

Сообщение maxboot » 27.02.2008 (Ср) 15:29

Алекс спасибо большое за подсказку, буду пробовать! Я отправил в личку сообщение как выбрать конкретный лабел

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

Re: 2Alex

Сообщение awl100Alex » 27.02.2008 (Ср) 15:39

maxboot писал(а): Я отправил в личку сообщение как выбрать конкретный лабел


Я не совсем понял... это у тебя был вопрос или утверждение? Что такое "личку"???

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

Сообщение Igor_123 » 27.02.2008 (Ср) 15:48

awl100Alex писал(а):Что такое "личку"???

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

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

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

Сообщение maxboot » 27.02.2008 (Ср) 15:57

Alex, утверждение, господин Igor прав "личка" - личные сообщения форума, по крайней мере у меня таким способом выбирается 6 из пожалуй сотни лабелов стороннего приложения и передаются в 6 различных textboxов моего.

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

Сообщение awl100Alex » 27.02.2008 (Ср) 16:04

А!.. Понятно! :)
Почту уже получил... спасибо. :) Буду разбираться... Если, что... не пропадай, пообщаемся, через личку. ;)

Но, лично я свой Label в сторонней проге "отсеял" через дополнительно написанный фильтр в hookD.dll...

Код: Выделить всё
If Len(MyString) >= 5 And Len(MyString) <= 6 Then
GetStr = Str$(Val(MyString))
SendMessage hProcess, %WM_SETTEXT, 0, STRPTR(GetStr)
End If


Сначала ограничил MyString по длине, а потом через функцию Val убрал все символы и оставил только число.

Спасибо, еще раз. Но я с тобой еще пообщаюсь. :)

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

Сообщение awl100Alex » 27.02.2008 (Ср) 16:51

maxboot
Я отправил личку... ;)

Пред.След.

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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 69

    TopList