Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.11;
Скачать: 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 вся ветка

Текущий архив: 2007.03.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.04 c
15-1171338126
Slider007
2007-02-13 06:42
2007.03.11
С днем рождения ! 13 февраля


2-1171611849
enZinger
2007-02-16 10:44
2007.03.11
Генератор ников


11-1150407283
parovoZZ
2006-06-16 01:34
2007.03.11
Demo2Forms - не понял юмора


15-1171473167
GeLLeR
2007-02-14 20:12
2007.03.11
dll и компонент к ней...


3-1166345336
VadimSpb
2006-12-17 11:48
2007.03.11
DBCC CHECKDB, DBCC DBREINDEX