Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


leonidus ©   (2006-10-25 10:41:00) 

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

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;

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


leonidus   (2006-10-25 14:07:00) [1]

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


Elen   (2006-10-25 13:57:00) [2]


> 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);

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


SpellCaster   (2006-10-25 13:54:00) [3]

leonidus,

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


Elen   (2006-10-25 13:41:00) [4]


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

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


leonidus   (2006-10-25 13:38:00) [5]

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


Elen   (2006-10-25 13:37:00) [6]


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

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


leonidus   (2006-10-25 13:37:00) [7]

ну да


Elen   (2006-10-25 13:35:00) [8]


> leonidus

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


Elen   (2006-10-25 13:26:00) [9]


> WndText

какого типа?


leonidus   (2006-10-25 13:22:00) [10]

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


leonidus   (2006-10-25 12:46:00) [11]

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

  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...


Elen   (2006-10-25 10:57:00) [12]


> 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 ******


novill   (2006-10-25 10:56:00) [13]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо