::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-06 21:31:46, Hit : 4636, Vote : 1230
 실행중인 모든 프로그램 Minimized 시키기

// Button1을 클릭하면 현재 실행중인 Application의 리스트를 ListBox1에 구한다
// LibtBox1에서 특정 프로그램을 클릭하면 Label1에 그 프로그램의 정보를 보여준다
// Button2를 클릭하면 이 프로그램을 제외한 나머지 프로그램들을 Minimized 시킨다

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    ListBox1: TListBox;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

function EnumWindowsProc(Wnd: HWND; lb: TListbox): BOOL; stdcall;
var
  caption: Array [0..128] of Char;
begin
  Result := True;
  if {skip invisible windows}
     IsWindowVisible(Wnd) and
     {only process truly top-level windows. GetWindowLong must be used, not GetParent}
     ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or
      (HWND(GetWindowLong(Wnd, GWL_HWNDPARENT)) = GetDesktopWindow)) and
     {skip WS_EX_TOOLWINDOW windows}
     ((GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW) = 0) then
  begin
    SendMessage(Wnd, WM_GETTEXT, Sizeof(caption), integer(@caption));
    lb.Items.AddObject(caption, TObject(Wnd));
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Clear;
  EnumWindows(@EnumWindowsProc, Integer(ListBox1));
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
  theClassname: array [0..128] of Char;
  Wnd: HWND;
  tid, pid: DWORD;
begin
  with Sender as TListbox do
  begin
    if ItemIndex >= 0 then
    begin
      Wnd := HWND(Items.Objects[itemindex]);
      if Wnd <> 0 then
      begin
        Windows.GetClassname(Wnd, theClassname, Sizeof(classname));
        tid := GetWindowThreadProcessID(Wnd, @pid );
        label1.caption :=
          Format(
            'HWND: %8.8x'#13#10+
            'Class: %s'#13#10+
            'Process ID: %8.8x'#13#10+
            'Thread ID: %8.8x',
            [Wnd, theClassname, pid, tid] );
      end;
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
  Wnd: HWND;
begin
  for i := 0 to ListBox1.Items.Count-1 do
  begin
    Wnd := HWND(ListBox1.Items.Objects[i]);
    // 이 프로그램이 아니고 minimized(iconic)가 아니면...
    if (Wnd <> 0) and (Wnd <> Application.Handle) then
      if not IsIconic(Wnd) then
      begin
        ShowWindow(Wnd, SW_HIDE);
        ShowWindow(Wnd, SW_MINIMIZE);
      end;
  end;
end;

end.





611   [데이터베이스] DB에 저장된 JPEG(JPG)를 DBGrid에 출력하기  김영대 2003/03/06 5219 1252
610   [데이터베이스] 동적으로 인덱스 만들기  김영대 2003/03/06 4439 1127
609   [데이터베이스] Excel ODBC를 사용하여 xls를 테이블로 사용하기  김영대 2003/03/06 6824 1584
608   [데이터베이스] DB alias중 ORACLE alias 명 구하기  김영대 2003/03/06 3987 971
607   [일반/컴포넌트] QuickReport에서 프린터 바꾸어서 출력하기  김영대 2003/03/06 6183 1536
606   [일반/컴포넌트] RichEdit 의 내용을 Bitmap 으로 만들기  김영대 2003/03/06 3329 869
605   [일반/컴포넌트] RichEdit 에서 문자(열)를 찾아 글자속성 바꾸기  김영대 2003/03/06 4706 1210
604   [일반/컴포넌트] RichEdit 에서 커서를 처음, 마지막으로 보내기  김영대 2003/03/06 6840 1473
  [윈도우즈 API] 실행중인 모든 프로그램 Minimized 시키기  김영대 2003/03/06 4636 1230
602   [시스템] 델파이로 DOS 프로그램(Console application) 만들기  김영대 2003/03/06 16992 7520
601   [COM/OLE] Registering *.tlb files without Delphi  김영대 2003/03/06 4963 1129
600   [네트웍/인터넷] How to bring a network down - "Win Nuke"  김영대 2003/03/06 7266 1991
599   [윈도우즈 API] 폴더나 파일의 윈도우즈 등록정보 dialog 띄우기  김영대 2003/03/06 5077 1473
598   [일반/컴포넌트] 이미지를 마우스로 drag 해서 zoom 하기  김영대 2003/03/06 3588 1019
597   [윈도우즈 API] 외부 프로그램을 최상위로 설정하기  김영대 2003/03/06 5202 1231
596   [일반/컴포넌트] TObject의 프로퍼티를 문자열로 참조하기  김영대 2003/03/06 5206 1591
595   [윈도우즈 API] 프로그램으로 Screensaver 등록하는 두가지 방법  김영대 2003/03/06 4466 1267
594   [데이터베이스] 특정 폼의 현재 편집중인 DB Field 구하기  김영대 2003/03/06 4073 1110
593   [윈도우즈 API] KeyDown의 Beep음을 없애자...  김영대 2003/03/06 4600 1210
592   [시스템] How do I use SetWindowsHookEx ?  김영대 2003/03/06 6776 954
591   [시스템] Redirecting DOS Application Output  김영대 2003/03/06 4473 1201
590   [일반/컴포넌트] 두개의 RichEdit 사이에 내용 복사하기  김영대 2003/03/06 5823 1360
589   [일반/컴포넌트] 특정 Color의 Invert Color 구하기  김영대 2003/03/06 4300 1315
588   [일반/컴포넌트] 문자열 수식문장(expression)의 결과 구하기  김영대 2003/03/06 3279 872
587   [시스템] 오디오 CD의 볼륨 조절하기  김영대 2003/03/06 3588 1025
586   [일반/컴포넌트] 윈도우즈 "날짜/시간" 설정화면 띄우기  김영대 2003/03/06 6184 1822
585   [시스템] 마이크 볼륨 조절하기  김영대 2003/03/06 4609 1284
584   [멀티미디어] JPEG, WAVE 를 resource 파일에 넣고 읽어오기  김영대 2003/03/06 5216 1223
583   [일반/컴포넌트] desktop 배경화면을 폼의 배경화면으로 그리기  김영대 2003/03/06 3651 1037
582   [윈도우즈 API] 레지스트리의 변경여부 알리는 2가지 방법  김영대 2003/03/06 4733 1278
581   [일반/컴포넌트] StringGrid 의 내용을 클립보드로 복사하기  김영대 2003/03/06 4437 1060
580   [데이터베이스] Save DBGrid To Excel  김영대 2003/03/06 6682 1723
579   [COM/OLE] Delphi의 OCX를 InstallShield로 배포하는 방법  김영대 2003/03/06 6737 5615
578   [일반/컴포넌트] ASCII printing  김영대 2003/03/06 5140 1211
577   [일반/컴포넌트] OEM conversion  김영대 2003/03/06 4295 1262
576   [일반/컴포넌트] Memo의 행의 문자수를 제한하고 WordWrap시키기  김영대 2003/03/06 5182 1314
575   [윈도우즈 API] DDE 쓰지 않고 IE의 현재 URL 가져오기  김영대 2003/03/06 5966 1673
574   [윈도우즈 API] RichEdit에 입력한 문장의 실제 높이 구하기  김영대 2003/03/06 5021 1426
573   [일반/컴포넌트] StringGrid 의 선택영역만 클립보드로 복사하기  김영대 2003/03/06 4825 1047
572   [일반/컴포넌트] StringGrid 에서 프로그램으로 MultiSelect 시키기  김영대 2003/03/06 5373 1187

[1][2][3][4][5][6][7][8][9] 10 ..[25] [다음 10개]
 

Copyright 1999-2022 Zeroboard / skin by zero