Форум: "WinAPI";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];
ВнизНе удается получить заголовок окна Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c