Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2008, 16:35   #1
King Nothing
 
Регистрация: 18.06.2008
Сообщений: 7
Сообщение Название окна приложения

Не пойму почему не могу получить название окна приложения.
В списке отображается указатель на окно (не пустой), а название окна не получается.

Код:
var
  Wnd      : HWnd ;
  WndName  : String;
begin
  Wnd := FindWindow(nil,'Документ1 - Microsoft Word');
  NamesListBox.Items.Add(IntToStr(Wnd));
  GetWindowText(Wnd,PChar(WndName),255);
  NamesListBox.Items.Add(WndName);

Последний раз редактировалось B_N; 18.06.2008 в 17:18.
King Nothing вне форума Ответить с цитированием
Старый 18.06.2008, 16:52   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

It's from MSDN:
Цитата:
GetWindowText Function

--------------------------------------------------------------------------------

The GetWindowText function copies the text of the specified window's title bar (if it has one) into a buffer. If the specified window is a control, the text of the control is copied. However, GetWindowText cannot retrieve the text of a control in another application.

Syntax

int GetWindowText( HWND hWnd,
LPTSTR lpString,
int nMaxCount
);
Parameters

hWnd
[in] Handle to the window or control containing the text.
lpString
[out] Pointer to the buffer that will receive the text. If the string is as long or longer than the buffer, the string is truncated and terminated with a NULL character.
nMaxCount
[in] Specifies the maximum number of characters to copy to the buffer, including the NULL character. If the text exceeds this limit, it is truncated.
Return Value

If the function succeeds, the return value is the length, in characters, of the copied string, not including the terminating NULL character. If the window has no title bar or text, if the title bar is empty, or if the window or control handle is invalid, the return value is zero. To get extended error information, call GetLastError.

This function cannot retrieve the text of an edit control in another application.
BOBAH13 вне форума Ответить с цитированием
Старый 19.06.2008, 07:25   #3
King Nothing
 
Регистрация: 18.06.2008
Сообщений: 7
По умолчанию

Подскажите пожалуйста как тогда в этом случае получить название окна?
King Nothing вне форума Ответить с цитированием
Старый 19.06.2008, 07:55   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

вот так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  Wnd      : HWnd ;
  WndName  : array[0..255] of char;
begin
  Wnd := FindWindow(nil,'Документ1 - Microsoft Word');
  GetWindowText(Wnd,@WndName,255);
  NamesListBox.Items.Add(WndName);
end;
rpy3uH вне форума Ответить с цитированием
Старый 27.01.2009, 08:02   #5
joker
Форумчанин
 
Регистрация: 23.09.2007
Сообщений: 147
По умолчанию

в EnumWindowsProc (при перечислении всех окон) вызываю GetWindowText что абсолютно также как у Грузина написана (я имею ввиду способ представления строковой переменной) и все время результат функции ноль, и ниче в строку не возвращает. В чем дело?
Я надеваю тапочки, ищу чем похмелиться, ах, если я сейчас умру, то на... я родился
joker вне форума Ответить с цитированием
Старый 27.01.2009, 08:21   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

так у всех окон? давай сюда код
rpy3uH вне форума Ответить с цитированием
Старый 27.01.2009, 13:07   #7
joker
Форумчанин
 
Регистрация: 23.09.2007
Сообщений: 147
По умолчанию

Код:
function EnumWindowProc(h: hwnd; lparam: integer): boolean;
var s: array [0..255] of char; 
...
begin
 result := true;
 if (GetWindowText(h,@s,255) = 0) or (string(s) = '') then exit;
 ...
 ///Код дальше никогда не выполняется
end;
Я надеваю тапочки, ищу чем похмелиться, ах, если я сейчас умру, то на... я родился
joker вне форума Ответить с цитированием
Старый 27.01.2009, 14:15   #8
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

функцию надо объявлять так
function EnumWindowProc(h: hwnd; lparam: integer): boolean; stdcall;
rpy3uH вне форума Ответить с цитированием
Старый 27.01.2009, 17:11   #9
joker
Форумчанин
 
Регистрация: 23.09.2007
Сообщений: 147
По умолчанию

мдаа, тяжелый случай (это надо давно не программить)))
Я надеваю тапочки, ищу чем похмелиться, ах, если я сейчас умру, то на... я родился
joker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Окна приложения DOLBY Общие вопросы Delphi 1 02.03.2008 11:33
Размер окна в зависимости от размера окна Reverent JavaScript, Ajax 1 02.02.2008 15:49
Делаю сайты, пишу маленькие/большие скрипты. Пишу веб-приложения и приложения под Windows. SkyM@n Фриланс 3 29.12.2007 16:21
закрыть все дочерни окна, кроме главного окна Worms Общие вопросы Delphi 2 03.12.2007 22:18
Как сделать чтобы дочерние окна в MDI-приложениях были вне главного окна??? dimonchuk Общие вопросы Delphi 1 11.08.2007 12:13