Показать сообщение отдельно
Старый 10.02.2004, 15:44     # 6
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Напиши сам на Delphi. Сперва получи список handle'ов окон, а потом с помощью функций API посылай им команды HIDE/SHOW. Для получения списка:
Код:
var
  Wnd: hWnd;
  buff: array [0..127] of char;
  wCap: string;
begin
  Wnd := GetWindow(Handle, gw_HWndFirst);
  while Wnd <> 0 do
    begin
      if (Wnd <> Application.Handle) and
          (GetWindow(Wnd, gw_Owner) = 0) and
          (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) then
        begin
          wCap := StrPas(buff);
          {здесь получено handle окна и его имя в переменных Wnd и wCap соответственно}
        end;
      Wnd := GetWindow(Wnd, gw_hWndNext);
    end;
end;
Добавлено через 1 час и 32 минуты:
Вот тебе проверенный код (компоненты располагай на форме сам):
Код:
unit untHS;

interface

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

type
  TfrmHS = class(TForm)
    vleHS: TValueListEditor;
    bitRefresh: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure vleHSSelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure vleHSClick(Sender: TObject);
    procedure bitRefreshClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmHS: TfrmHS;

implementation

{$R *.dfm}

var
  SelectedWnd: integer;

procedure TfrmHS.FormCreate(Sender: TObject);
begin
  SelectedWnd := 0;
end;

procedure TfrmHS.vleHSSelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  SelectedWnd := ARow;
end;

procedure TfrmHS.vleHSClick(Sender: TObject);
var
  Wnd: hWnd;
begin
  Wnd := 0;
  if vleHS.Cells[0, SelectedWnd] <> '' then
    Wnd := StrToInt(vleHS.Cells[0, SelectedWnd]);
  if Wnd = 0 then Exit;
  if not IsWindowVisible(Wnd) then ShowWindow(Wnd, SW_SHOWNOACTIVATE)
                              else ShowWindow(Wnd, SW_HIDE);
  vleHS.Repaint;
  bitRefreshClick(Sender);
end;

procedure TfrmHS.bitRefreshClick(Sender: TObject);
var
  Wnd: hWnd;
  buff: array [0..127] of char;
  addStr: string;
begin
  vleHS.Strings.Clear;
  Wnd := GetWindow(Handle, gw_HWndFirst);
  while Wnd <> 0 do begin
    if (Wnd <> Application.Handle) and
       (GetWindow(Wnd, gw_Owner) = 0) and
       (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) then begin
      if IsWindowVisible(Wnd) then addStr := '+' else addStr := '--';
      addStr := IntToStr(Wnd) + '=[' + addStr + '] ' + StrPas(buff);
      vleHS.Strings.Add (addStr);
    end;
    Wnd := GetWindow(Wnd, gw_hWndNext);
  end;
end;

end.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!

Последний раз редактировалось Ghost; 10.02.2004 в 15:08.
Ghost вне форума