◀ PREV : [1] : [2] : [3] : [4] : [5] : ... [127] : NEXT ▶

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ShellApi, Menus;

const
  WM_NOTIFYICON = WM_USER + 333;

type
  TForm1 = class(TForm)
    PopMenu: TPopupMenu;
    Show1: TMenuItem;
    EXit1: TMenuItem;
    procedure EXit1Click(Sender: TObject);
    procedure Show1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    NotifyIcnData : TNotifyIconData;
    hMainIcon : HICON;

    procedure ClickTrayIcon(var msg: TMessage); message WM_NOTIFYICON;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}

// System Tray에 Icon의 Event 수신
procedure TForm1.ClickTrayIcon(var msg: TMessage);
var
    pt: TPoint;
begin
  case msg.lparam of
    WM_LBUTTONDBLCLK : Show;
    WM_RBUTTONDOWN :
      begin
        GetCursorPos(pt);
        PopMenu.Popup(pt.x, pt.y);
      end;
  end;
end;

procedure TForm1.EXit1Click(Sender: TObject);
begin
  Application.Terminate;
end;

// Form Close 했을 때
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caNone;
  Hide; // Form 숨기기
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // System Tray에 Icon 표시
  hMainIcon := LoadIcon(MainInstance, 'MAINICON');

  Shell_NotifyIcon(NIM_DELETE, @NotifyIcnData);

  with NotifyIcnData do
  begin
    cbSize            := sizeof(TNotifyIconData);
    Wnd               := handle;
    uID               := 11111;
    uFlags            := NIF_MESSAGE or NIF_ICON or NIF_TIP;
    uCallbackMessage  := WM_NOTIFYICON;
    hIcon             := HMainIcon;
    szTip             := 'System Tray Test';
  end;

  Shell_NotifyIcon(NIM_ADD, @NotifyIcnData);
end;

procedure TForm1.Show1Click(Sender: TObject);
begin
  Show;
end;

end.




Posted by 띠리

// GetFileList : Sub Folder안의 File까지 검색하는 함수
//      slFileList : 반환하는 File List
//      sPath : 검색한 Root Folder
//      sMask : File 검색 Mask 설정
//              예) '*.txt', '*.exe'
//      bSubDir : SubFolder 검색 유무
procedure GetFileList(slFileList: TStringList;
                      sPath, sMask: string; bSubDir: boolean);
var
  i, iFindRst : integer;
  SrchRec : TSearchRec;
  slFolder : TStringList;
begin
  if sPath[length(sPath)] <> '\' then
    sPath := sPath + '\';

  // 지정 Foldr 안의 지정 Mask의 Full File path 수집
  iFindRst := FindFirst(sPath + sMask, faAnyFile - faDirectory, SrchRec);
  while iFindRst = 0 do
  begin
    slFileList.Add(sPath + SrchRec.Name);
    iFindRst := FindNext(SrchRec);
  end;
  FindClose(SrchRec);

  // Sub Folder List 수집
  slFolder := TStringList.Create;
  iFindRst := FindFirst(sPath + '*.*', faAnyFile, SrchRec);
  while iFindRst = 0 do begin
    if ((SrchRec.Attr and faDirectory) <> 0) and (SrchRec.Name[1] <> '.') then
      slFolder.Add(sPath + SrchRec.Name);
    iFindRst := FindNext(SrchRec);
  end;
  FindClose(SrchRec);

  // Sub Folder안 File 검색
  for i := 0 to slFolder.Count - 1 do
    GetFileList(slFileList, slFolder[i], sMask, bSubDir);

  slFolder.Free;
end;




procedure TForm1.Button1Click(Sender: TObject);
var
  slFiles : TStringList;
begin
  slFiles := TStringList.Create;
  GetFileList(slFiles, 'c:\data\', '*.txt', true); //

  memo1.Clear;
  memo1.Lines := slFiles;

  slFiles.Free;
end;

Posted by 띠리
BLOG main image
프로그래밍 공부하면서 써가는 개인 노트 (따라서 여기에 씌여있는 소스의 신빙성을 보장 못함 -.-;;) 이 블로그 보면서 틀린 점이 있으면 꼬옥 알려주세요. by 띠리

공지사항

카테고리

분류 전체보기 (254)
Win32 SDK 초보 (27)
통신관련 (13)
MFC TIP (20)
C/C++ TIP (10)
개발기타 (9)
링크 (2)
견물생심 (24)
이것저것 (7)
용어메모 (3)
데이터베이스 (26)
비주얼 베이직 (10)
하드웨어 (1)
델파이 (81)
홈페이지 (5)
낙서 (5)
기타 (4)
Total : 320,452
Today : 78 Yesterday : 96