|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Динамический хендл
Заголовок окна имеет динамическую форму: 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
|
||||
|
||||
Код:
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
|
|||
|
|||
Код:
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
|
||||
|
||||
Да, первая часть константа вторая - переменная, это если мы знаем как меняется переменная часть. Пример ('Окно номер =' - константа, '23' - переменная от 0-99). Если незнаем ничего о переменной части то используй вторую функцию FindWnd - по части названия окна возвращает его HWND.
If end Then begin; |