![]() |
|
|
#16
|
|||
|
|||
|
Если б у меня был ICQ, я написала бы сразу, что к чему и как. Но поскольку его нет (и даром не нужен), то могу лишь вслепую пробежать ваш код. Но всё равно сейчас посмотрю.
P.S. А что это вы мне подкинули? X) Это же только то, что я вам написала, и больше ничего. Что там проверять-то?? Последний раз редактировалось Nyctos Kasignete, 26.06.2009 в 21:41. |
|
#17
|
|||
|
|||
|
Я не могу через FindWindow найти окно чата. и приходиться вставлять хендл вручную. А он всегда разный. Желательно, чтобы это было автоматом. И проблема с билебердой меня беспокоит. Может вы ради меня поставите ICQ, протестируете и затем его удалите? Просто мне очень нужно, что написано в сабже темы.
Последний раз редактировалось Muxa, 26.06.2009 в 21:48. |
|
#18
|
|||
|
|||
|
Подождите, а зачем столько нулей стоит вначале:
Цитата:
Если это число шестнадцатеричное, то оно пишется так. Код:
GetTxt($00030564); |
|
#19
|
|||
|
|||
|
Да, да - точно. Я забыл. Теперь вообще ничего не выдает(
|
|
#20
|
|||
|
|||
|
Ну как я вам ещё помогу... Для того, чтобы получить 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
|
|||
|
|||
|
Я как только не извращался, но не выходит. Не находит окна((
![]() |
|
#22
|
|||
|
|||
|
Неужели никто не поможет? Не получается у меня сделать. Я много раз пытался, но захват не происходит(
|
|
#23
|
|||
|
|||
|
http://www.delphikingdom.com/asp/vie...catalogid=1167
Кароч, даже в их примере не все окна находятся. Незнаю как это делает WinSpy++... ( Надо у автора проги спросить ))) |
|
#24
|
|||
|
|||
|
Благодаря 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
|
|||
|
|||
|
|