Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.07.2011, 13:48
Ghennadiy Ghennadiy вне форума
Прохожий
 
Регистрация: 25.08.2009
Сообщения: 17
Репутация: 10
Сообщение Динамический хендл

Заголовок окна имеет динамическую форму: xxxx yyyyy, xxxx статический текст а yyyyy динамический. вот функция для получения хендла окна

Код:
function GetListViewHandle(WndName: string): THandle;
begin
  Result := FindWindowEx(0, 0, 'xxxx', PAnsiChar(WndName));
  if Result = 0 then
    raise Exception.Create('xxxx хендл');
end;

она видит только xxxx, вопрос как приклееться к xxxx а yyyyy останеться динамическим?
Ответить с цитированием
  #2  
Старый 29.07.2011, 15:17
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Код:
const
 x = 'xxxxx';
var
 y, s: String;
begin
 y:= 'динамика';
 s:= x + y;
 //далее ищем окно с названием s; 
end;

Может так ещё:
Код:
Function FindWnd(S: String): HWND;
Var
 Wnd: HWnd;
 buff: Array [0..127] of Char;
begin
 FindWnd:= 0;
 Wnd:= GetWindow(Form1.Handle,gw_HWndFirst);
 While Wnd <> 0 Do
  begin
   if (Wnd <> Application.Handle ) And
      IsWindowVisible(Wnd) And
      (GetWindow(Wnd,gw_Owner) = 0) And
      (GetWindowText(Wnd, buff, SizeOf(buff)) <> 0) Then
       begin
        GetWindowText(Wnd, buff, SizeOf(buff));
        if Pos(S, StrPas(buff)) > 0 Then
         begin
          FindWnd:= Wnd;
          Break;
         end;
        end;
   Wnd:= GetWindow(Wnd, gw_hWndNext);
  end;
end;
__________________
If end Then begin;

Последний раз редактировалось AND_REY, 29.07.2011 в 15:32.
Ответить с цитированием
  #3  
Старый 29.07.2011, 15:41
Ghennadiy Ghennadiy вне форума
Прохожий
 
Регистрация: 25.08.2009
Сообщения: 17
Репутация: 10
Сообщение

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
 x = 'Windows';
var
 y, s: String;
begin
 y:= ' Task Manager';
 s:= x + y;
 //äàëåå èùåì îêíî ñ íàçâàíèåì s;
  Memo1.Lines.CommaText := GetItemsText(GetListViewHandle(S));
end;

не совсем понимаю, y должно быть переменной
Ответить с цитированием
  #4  
Старый 29.07.2011, 16:14
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Да, первая часть константа вторая - переменная, это если мы знаем как меняется переменная часть. Пример ('Окно номер =' - константа, '23' - переменная от 0-99). Если незнаем ничего о переменной части то используй вторую функцию FindWnd - по части названия окна возвращает его HWND.
__________________
If end Then begin;
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter