![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск окна [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 по заголовку :)