Вниз
Скачать: CL | DM;

Не удается получить заголовок окна   Найти похожие ветки 

← →
leonidus ©   (2006-10-25 10:41) [0]

нужно получить тест из заголовка чужого приложения, делаю так:

function GetWndText(WindowHandle: hwnd): string;
var
 txtLength : integer;
 buffer: string;
begin
 TxtLength:= SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0);
 txtlength:= txtlength + 1;
 setlength(buffer, txtlength-1);
 sendmessage (WindowHandle,wm_gettext, txtlength, longint(@buffer[1]));
 result:= buffer;
end;

но получаю пустую строку, в чем может быть трабла?


← →
novill ©   (2006-10-25 10:56) [1]

У меня всё работает.  Можт ты хендл неправильный передаешь?


← →
Elen ©   (2006-10-25 10:57) [2]


> leonidus

А так? :

//********** FUNCTION **********
function WindowCaption(wind:hwnd=0):string;
var Nm:Array[0..255] of Char;
begin
   if wind =0 then wind:=GetForegroundWindow;
   GetWindowText(Wind,Nm,sizeof(nm)); // считываем  текст заголовка окна
   result:=string(nm);
end;
//********** END FUNCTION ******


← →
leonidus ©   (2006-10-25 12:46) [3]

Да в том то и дело, что например класс окна по тому же хендлу определяется нормально:

  Wnd:= WindowFromPoint(pt);
  GetWindowRect( Wnd, Rect );
  GetWindowText( Wnd, buff, SizeOf( buff ) );
  GetClassName( Wnd, buff, SizeOf( buff ) );
  NameClass := StrPas( buff );

Т.е. для IE в NameClass получаю "Internet Explorer_Server" а потом вызываю:
  WndText:=GetWndText(Wnd);

и получаю пустой WndText...


← →
leonidus ©   (2006-10-25 13:22) [4]

>Elen с вашей функцие то же самое


← →
Elen ©   (2006-10-25 13:26) [5]


> WndText

какого типа?


← →
Elen ©   (2006-10-25 13:35) [6]


> leonidus

Гыгы... Признайся ты наводиш мышу не на главное окно IE а на его содержимое, в котором отображается страница?


← →
Elen ©   (2006-10-25 13:37) [7]


> Т.е. для IE в NameClass получаю "Internet Explorer_Server"
> а потом вызываю:
>   WndText:=GetWndText(Wnd);

У Internet Explorer_Server "капшн" пустой !


← →
leonidus ©   (2006-10-25 13:37) [8]

ну да


← →
leonidus ©   (2006-10-25 13:38) [9]

а как же тогда получить заголовок самого окна?


← →
Elen ©   (2006-10-25 13:41) [10]


> а как же тогда получить заголовок самого окна?

В принципе можно использовать EnumWindow или если по наводке мышкой на капшн главной формы. Тебе что надо скажи конкретнее...


← →
SpellCaster   (2006-10-25 13:54) [11]

leonidus,

HWND GetParent(
   HWND hWnd  // handle of child window
  );


← →
Elen ©   (2006-10-25 13:57) [12]


> leonidus


Wnd:= WindowFromPoint(Mouse.CursorPos);
while getparent(wnd)<>0 do wnd:=getparent(wnd);
 GetWindowText( Wnd, buff, SizeOf( buff ) );
 caption:=string(buff);
 GetClassName( Wnd, buff, SizeOf( buff ) );
caption:=caption+" "+string(buff);

В этом случае не важно где курсор


← →
leonidus ©   (2006-10-25 14:07) [13]

Большое спасибо, как раз то что нужно.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.029 c
15-1171513663
Александр Иванов
2007-02-15 07:27
2007.03.11
Ваше отношение к паттернам


2-1171569469
dima1233
2007-02-15 22:57
2007.03.11
Окна


2-1171856337
A$$embler
2007-02-19 06:38
2007.03.11
Эквалайзер на Delphi7


15-1171537147
ryslan56
2007-02-15 13:59
2007.03.11
HTML


2-1171632549
Dreamse
2007-02-16 16:29
2007.03.11
Как при создании нового окна показывать кнопку на пенеле задач ?




   Наверх