상세 컨텐츠

본문 제목

[윈도우즈 API] "시작"->"프로그램" 메뉴에 폴더 추가하기

카테고리 없음

by [롯벨] 2023. 9. 3. 09:03

본문

unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation
{$R *.dfm}

function CreateFolder(Foldername: string; aLocation: integer): boolean;
var
  pIdl: PItemIDList;
  hPath: PChar;
begin
  Result := False;
  if SUCCEEDED(SHGetSpecialFolderLocation(0, aLocation, pidl)) then
  begin
    hPath := StrAlloc(max_path);
    SHGetPathFromIDList(pIdl, hPath);
    SetLastError(0);
    CreateDirectory(PChar(hPath + '\' + Foldername), nil );
    if (GetLastError()=0) or
       (GetLastError()=ERROR_ALREADY_EXISTS) then
      Result := true;
    StrDispose(hPath);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  CreateFolder('방금만든 그룹폴더',  CSIDL_PROGRAMS);

(* 다른 폴더 IDL
CSIDL_BITBUCKET // Recycle Bin
CSIDL_CONTROLS
CSIDL_DESKTOP
CSIDL_DESKTOPDIRECTORY
CSIDL_DRIVES
CSIDL_FONTS
CSIDL_NETHOOD
CSIDL_NETWORK
CSIDL_PERSONAL
CSIDL_PRINTERS
CSIDL_PROGRAMS
CSIDL_RECENT // 최근에 사용한 파일
CSIDL_SENDTO
CSIDL_STARTMENU
CSIDL_STARTUP
CSIDL_TEMPLATES
*)
end;

end.