Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск окна [D6, Win95/98, WinME, NT4, Win2k, WinXP]


Serhio ©   (2003-10-31 19:24:00) 

Поскажите плз, как можно найти окно, если известна только часть его заголовка?


Serhio   (2003-10-31 20:57:00) [1]

УРА!!! Заработало!!! Всем огромное спасибо, особенно ZrenBy


ZrenBy   (2003-10-31 20:50:00) [2]

function EnumWindowsProc(hW:HWND;lP:LPARAM):Boolean;stdcall;
var S:String;
begin
SetLength(S,SendMessage(hW,WM_GETTEXTLENGTH,0,0)+1);
SetLength(S,SendMessage(hW,WM_GETTEXT,Length(S),LPARAM(S)));
TListBox(lP).Items.Add(Format("%8.8x | %s ", [hW,S]) );
Result := True;
end;

procedure Tf.Button2Click(Sender: TObject);
begin
ListBox1.Clear;
EnumWindows(@EnumWindowsProc,LPARAM(ListBox1));
end;


DVM   (2003-10-31 20:49:00) [3]

А у функции 2 параметра должно быть.

BOOL EnumWindows(

WNDENUMPROC lpEnumFunc, // указатель на функцию обратного вызова

LPARAM lParam // определяемое программой значение

);

BOOL CALLBACK EnumWindowsProc(

HWND hwnd, // дескриптор родительского окна

LPARAM lParam // определяемое программой значение

);


Игорь Шевченко   (2003-10-31 20:48:00) [4]

function FindWindowsName(hWindow: hWnd): Bool;
var
sWTitle: array[0..255] of char;
begin
Result := true;
.....
Application.MessageBox("Нашел!!! :)","",MB_OK);
result:=false; //окончили перебор


Serhio   (2003-10-31 20:37:00) [5]

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function FindWindowsName(hWindow: hWnd): Bool;
var
sWTitle: array[0..255] of char;
begin
GetWindowText(hWindow, sWTitle, SizeOf(sWTitle));
if Pos("Opera", sWTitle) <> 0 then
begin
Application.MessageBox("Нашел!!! :)","",MB_OK);
result:=true;
exit;
end;
Application.MessageBox("Ничего не найдено :(","",MB_OK);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
enumWindows(@FindWindowsName, Longint(Self));
end;

end.


DVM   (2003-10-31 20:35:00) [6]


> Что-то ничего не получается, не находит.

приведи полный код


Serhio   (2003-10-31 20:33:00) [7]

Что-то ничего не получается, не находит.


Игорь Шевченко   (2003-10-31 20:22:00) [8]

var
atext : array[0..255] of char;

GetWindowText(Hwnd, atext, SizeOf(atext));
if Pos("кусокзаголовка", atext) <> 0 then
нашли


DVM   (2003-10-31 20:19:00) [9]

GetWindowText()


Serhio   (2003-10-31 20:16:00) [10]

А как получить заголовок окна, дескриптор которого известен?


Игорь Шевченко   (2003-10-31 19:36:00) [11]

EnumWindows и Pos по заголовку :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо