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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2009, 10:11   #1
AlexandrSid
Форумчанин
 
Регистрация: 31.10.2007
Сообщений: 103
По умолчанию Получить заголовки главных окон

Пытаюсь получить текст заголовка всех главных окон, но почему-то при считывании (if GetWindowText(hWindow,s,SizeOf(s))< >0 then) всегда возвращает 0 байт. Подскажите что делаю не так.

Код:
function EnumListOfTasks(hWindow: hWnd): Bool;
var
  s:array[0..255] of Char;
  i:integer;
begin
  if GetWindowText(hWindow,s,SizeOf(s))<>0 then
    Form1.ListBox1.items.add(StrPas(s));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Clear;
  enumWindows(@EnumListOfTasks, Longint(Self));
end;
AlexandrSid вне форума Ответить с цитированием
Старый 22.05.2009, 10:39   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Вот что нашел на delphiworld.narod.ru
Код:
 function NT_InternalGetWindowText(Wnd: HWND): string;
 type
   TInternalGetWindowText = function(Wnd: HWND; lpString: PWideChar;
     nMaxCount: Integer): Integer;
    stdcall;
 var
   hUserDll: THandle;
   InternalGetWindowText: TInternalGetWindowText;
   lpString: array[0..MAX_PATH] of WideChar; //Buffer for window caption
  oemStr: PChar;
 begin
   Result   := '';
   hUserDll := GetModuleHandle('user32.dll');
   if (hUserDll > 0) then
   begin @InternalGetWindowText := GetProcAddress(hUserDll, 'InternalGetWindowText');
     if Assigned(InternalGetWindowText) then
     begin
       InternalGetWindowText(Wnd, lpString, SizeOf(lpString));
       Result := string(lpString);
     end;
   end;
 end;
Использовать например так
Код:
ShowMessage(NT_InternalGetWindowText(Handle));
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 22.05.2009, 10:47   #3
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Цитата:
function EnumListOfTasks(hWindow: hWnd): Bool;
var
s:array[0..255] of Char;
i:integer;
begin
if GetWindowText(hWindow,s,SizeOf(s))< >0 then
Form1.ListBox1.items.add(StrPas(s)) ;
end;
Ну во первых callback, а значит stdcall;
Во вторых, пока перечисляем, Result := true;
(см. MSDN http://msdn.microsoft.com/en-us/library/ms633497.aspx)

Код:
function EnumListOfTasks(hWindow: hWnd; lParam : LPARAM): Bool; stdcall;
var
  s:array[0..255] of Char;
  i:integer;
begin
  if GetWindowText(hWindow,s,SizeOf(s))<>0 then
    Form1.ListBox1.items.add(StrPas(s));
  Result := true;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Clear;
  EnumWindows(@EnumListOfTasks, Longint(Self));
end;

Последний раз редактировалось Ring0Sn; 22.05.2009 в 10:49.
Ring0Sn вне форума Ответить с цитированием
Старый 22.05.2009, 11:01   #4
AlexandrSid
Форумчанин
 
Регистрация: 31.10.2007
Сообщений: 103
По умолчанию

Спасибо огромное Ring0Sn
AlexandrSid вне форума Ответить с цитированием
Старый 22.05.2009, 11:23   #5
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Код:
procedure TForm2.Button2Click(Sender: TObject);
var wh:hwnd;
     s:array[0..255] of Char;
begin
wh:=handle;
repeat
 wh:= getnextwindow(wh,GW_HWNDNEXT);
 if (getparent(wh)=0) then//главное окно
 begin
  GetWindowText(wh,s,SizeOf(s));
  listbox1.Items.Add(s);
 end;
until wh=0;
end;
SERG1980 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
замена заголовки форми bmb_66 Общие вопросы Delphi 11 28.09.2009 08:12
Получить тексты всех окон в системе micaell Win Api 1 25.02.2009 09:02
Как получить список окон кнопок которые появляются на панели задач? Paul Hindenburg Win Api 6 20.02.2009 09:58
Заголовки таблицы в Excel zetrix Microsoft Office Excel 0 30.10.2006 19:36