Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 26.06.2009, 21:36
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Если б у меня был ICQ, я написала бы сразу, что к чему и как. Но поскольку его нет (и даром не нужен), то могу лишь вслепую пробежать ваш код. Но всё равно сейчас посмотрю.

P.S. А что это вы мне подкинули? X)
Это же только то, что я вам написала, и больше ничего. Что там проверять-то??

Последний раз редактировалось Nyctos Kasignete, 26.06.2009 в 21:41.
Ответить с цитированием
  #17  
Старый 26.06.2009, 21:44
Muxa Muxa вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 80
Репутация: 10
По умолчанию

Я не могу через FindWindow найти окно чата. и приходиться вставлять хендл вручную. А он всегда разный. Желательно, чтобы это было автоматом. И проблема с билебердой меня беспокоит. Может вы ради меня поставите ICQ, протестируете и затем его удалите? Просто мне очень нужно, что написано в сабже темы.

Последний раз редактировалось Muxa, 26.06.2009 в 21:48.
Ответить с цитированием
  #18  
Старый 26.06.2009, 21:52
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Подождите, а зачем столько нулей стоит вначале:
Цитата:
Сообщение от Muxa
gettxt(00030564);

Если это число шестнадцатеричное, то оно пишется так.
Код:
GetTxt($00030564);
Ответить с цитированием
  #19  
Старый 26.06.2009, 21:58
Muxa Muxa вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 80
Репутация: 10
По умолчанию

Да, да - точно. Я забыл. Теперь вообще ничего не выдает(
Ответить с цитированием
  #20  
Старый 26.06.2009, 22:24
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Ну как я вам ещё помогу... Для того, чтобы получить handle окна, можно исследовать само главное окно ICQ с помощью функции EnumChildWindows. Вот пример. Ищем по классу RichEdit20A.
Код:
unit Uni_t1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ChatWnd: HWND;
  function EnumChildWndProc(hndl: HWND; lprm: LPARAM): BOOL; stdcall;

implementation

{$R *.dfm}

function EnumChildWndProc(hndl: HWND; lprm: LPARAM): BOOL; stdcall;
var
  WndClassName: PChar;
begin
  GetMem(WndClassName, 255);
  try
    Result := True;
    GetClassName(hndl, WndClassName, 255);
    if LowerCase(StrPas(WndClassName)) = 'richedit20a' then
    begin
      ChatWnd := hndl;
      Result := False;
    end;
  finally
    FreeMem(WndClassName, 255);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
const
  ICQWNDTEXT = 'ICQ'; // вот здесь напишите реальный заголовок окна ICQ
var
  ICQWnd: HWND;
begin
  ChatWnd := 0;
  ICQWnd := FindWindow(nil, ICQWNDTEXT);
  if ICQWnd = 0 then Exit;
  EnumChildWindows(ICQWnd, @EnumChildWndProc, 0);
  if ChatWnd <> 0 then // нашли!
    ShowMessage('Chat Window Handle is ' + IntToStr(ChatWnd))
  else // не нашли. Возможно, он — дочернее окно в дочернем
    ShowMessage('Not found. Maybe it is a child of a child');
end;

end.

P.S. ICQ ради вас устанавливать не буду, уж простите. Мне накладно скачивать пару десятков мегабайт.
Ответить с цитированием
  #21  
Старый 27.06.2009, 14:57
Muxa Muxa вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 80
Репутация: 10
По умолчанию

Я как только не извращался, но не выходит. Не находит окна((
Ответить с цитированием
  #22  
Старый 28.06.2009, 11:52
Muxa Muxa вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 80
Репутация: 10
По умолчанию

Неужели никто не поможет? Не получается у меня сделать. Я много раз пытался, но захват не происходит(
Ответить с цитированием
  #23  
Старый 04.07.2009, 17:50
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

http://www.delphikingdom.com/asp/vie...catalogid=1167

Кароч, даже в их примере не все окна находятся. Незнаю как это делает WinSpy++... ( Надо у автора проги спросить )))
Ответить с цитированием
  #24  
Старый 04.07.2009, 19:30
Muxa Muxa вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 80
Репутация: 10
По умолчанию

Благодаря Nyctos Kasignete,у меня получилось отыскать все дочерние окна. Пытался получить текст из она с чатом QIP, но не выходит. Там используется: Trichview. Делаю вот так:
Код:
var
  QIP, PageHandle, TabHandle, childHWND1, childHWND2, childHWND3: THandle;
  lpBuffer: PChar;
begin
  QIP := FindWindow(nil, PChar('Текст окна с чатом'));
  if QIP <> 0 then
  begin
    PageHandle := FindWindowEx(H, 0, 'TInfiPageControl.UnicodeClass', nil);
    if PageHandle <> 0 then
    begin
     TabHandle := FindWindowEx(PageHandle, StrToInt('$00060A4C'), 'TQipTabSheet.UnicodeClass',nil);
     if TabHandle <> 0 then
     begin
        childHWND1 := FindWindowEx(TabHandle, StrToInt('$00060A4C'), 'TMsgPanel.UnicodeClass', nil);
        if childHWND <> 0 then
        begin
childHWND2 := FindWindowEx(TabHandle, StrToInt('$00040A50'), 'TInfuPanel.UnicodeClass', nil);
        if childHWND2 <> 0 then
begin
        childHWND3 := FindWindowEx(TabHandle, StrToInt('$00030A68'), 'TRichView', nil);
        if childHWND3 <> 0 then
lpBuffer := GetMemory(2028);
          try
            SendMessage(childHWND3, WM_GETTEXT, 2048, Integer(lpBuffer));
            RichEdit1.Text := lpBuffer;
          finally
            FreeMemory(lpBuffer);

но не могу получить текст. Ни у кого других мыслей нет?((
Ответить с цитированием
  #25  
Старый 04.07.2009, 20:35
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

http://www.swissdelphicenter.ch/torr...de.php?id=1440
http://www.delphimaster.ru/cgi-bin/f...1220057367&n=0
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:23.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter