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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2008, 19:54   #1
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию Найти окно по маске

Требуется нати окно по маски поиска. Есть функции FindWindow например FindWindow(nil, 'Безымянный - Paint'), но она ищет окно с полным совпадением имен, т.е. FindWindow(nil, 'Без* - Paint'), ничего не найдет.
Иллидан вне форума Ответить с цитированием
Старый 27.02.2008, 20:33   #2
DOLBY
Форумчанин
 
Аватар для DOLBY
 
Регистрация: 12.12.2007
Сообщений: 121
По умолчанию

Приведённый ниже код ищет окна, в заголовки которых так или иначе входит текст "Paint" и заносит их в listbox..

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
var wd:hwnd;
    nm:array[0..255] of char;
    str:string;
begin
 listbox1.Items.Clear;
 wd:=findwindow(0,0);
 while (wd<>0) do
  begin
   getwindowtext(wd,nm,255);
   str:=string(nm);
   if pos('Paint',str)<>0 then
    listbox1.Items.Add(str);
   application.ProcessMessages;
   wd:=getnextwindow(Wd,GW_HWNDNEXT);
  end;
end;

end.
Компьютеры - вещь слишком сложная, чтобы работать в принципе. Поэтому то, что они работают хоть как-то, уже чудо.
DOLBY вне форума Ответить с цитированием
Старый 28.02.2008, 01:06   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Кaк искать oкнo по части eгo нaзвaния

Код:
function FindNextWnd(StartHWND: HWND; AString : String): HWND;
var
  Buffer : array [0..255] of char;
begin
  Result := StartHWND;
  repeat
    Result := FindWindowEx(0, Result, nil, nil);
    GetWindowText(Result, Buffer, SizeOf(Buffer));
    if StrPos(StrUpper(Buffer), PChar(UpperCase(AString))) <> nil
    then  Break;
  until (Result = 0);
end;
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно программно найти окно программы и нажать на нем кнопку SeRыЙ Win Api 23 09.03.2010 08:00
Как удалить из строки подстроку по маске ? - fenix - Помощь студентам 4 23.04.2008 15:04
Поиск По маске CoreFox Общие вопросы Delphi 11 21.02.2008 21:48
Замена по маске Drain Общие вопросы Delphi 1 14.02.2008 16:08
«Окно+символ». Создать класс, представляющий окно в текстовом режиме. RustreX Паскаль, Turbo Pascal, PascalABC.NET 1 11.11.2007 19:28