Q&A

  • 현재 실행중인 모든 프로그램의 리스트를 얻고 싶거든요
현재 실행중인 프로그램의 caption리스트를 얻고 싶은데요..

제가 워낙 모르는 터이라 -_-;

김영대님 홈에있는 tip을 봤는데 잘모르겠어요-_-;



1  COMMENTS
  • Profile
    김영대 1999.08.05 23:36
    허창수 께서 말씀하시기를...

    > 현재 실행중인 프로그램의 caption리스트를 얻고 싶은데요..

    > 제가 워낙 모르는 터이라 -_-;

    > 김영대님 홈에있는 tip을 봤는데 잘모르겠어요-_-;

    >



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls;



    type

    TForm1 = class(TForm)

    Button1: TButton;

    ListBox1: TListBox;

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    function GetTitle(WinHandle: HWND): String;

    var

    TitleLn : integer;

    begin

    Result := '';

    TitleLn := GetWindowTextLength(WinHandle);

    if TitleLn > 0 then

    begin

    // GetWindowText()가 문자열의 맨 끝에 null 문자를 추가하므로 1증가 시킨다

    inc(TitleLn);

    SetLength(Result, TitleLn);

    // 명시한 원도우 핸들의 title bar를 읽어온다

    GetWindowText(WinHandle, PChar(Result), TitleLn);

    end;

    end;



    // EnumWindows 를 위한 Callback function

    function enumcall(awin, lparam: longint): Boolean; stdcall;

    var

    buffer: String;

    begin

    buffer := GetTitle(awin);

    if buffer<>'' then

    TListBox(lparam).Items.Add(buffer);

    Result := True;

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    EnumWindows(@enumcall, Integer(ListBox1));

    end;



    end.