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

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


Category

  김영대(2004-07-24 22:37:47, Hit : 4443, Vote : 1141
 http://www.howto.pe.kr
 제어판의 모든 applet 정보 구하기

unit Unit1;

interface

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

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

type
   TCPlAppletFunc =
     function(
       hwndCPl: HWnd; // handle to Control Panel window
       uMsg: DWord; // message
       lParam1: Longint; // first message parameter
       lParam2: Longint // second message parameter
     ): Longint; stdcall;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function LoadStringFromModule(Module: HInst; ID: Integer): string;
const
  MaxLen = 2000;
var
  Len: Integer;
begin
  SetLength(Result, MaxLen);
  Len := LoadString(Module, ID, PChar(Result), MaxLen);
  if Len > 0 then
    SetLength(Result, Len)
  else
    Result := '';
end;

procedure ShowCPLNameAndDescription(FileName: string; Memo1: TMemo);
var
   H: HInst;
   CPlApplet: TCPlAppletFunc;
   NumberOfApplets: Integer;
   AppletInfo: TCPLInfo;
   I: Integer;
   Name, Desc: string;
begin
   // Load CPL
   H:= LoadLibrary(PChar(FileName));
   if H <> 0 then
   try
     // Get CPlApplet Function from Module
     CPlApplet:= GetProcAddress(H, 'CPlApplet');
     if Assigned(CPlApplet) then
     begin
       // Get Number of Applets contained
       NumberOfApplets:= CPlApplet(Application.Handle,
         CPL_GetCount, 0, 0);
       Memo1.Lines.Add((Format('There are %d Applets in file: ' + FileName,
         [NumberOfApplets])));
       Memo1.Lines.Add('    -------------------');
       // For each Applet in the file
       for I:= 0 to NumberOfApplets - 1 do
       begin
         // Get Name and Desription
         CPlApplet(Application.Handle, CPL_INQUIRE, I,
           Longint(@AppletInfo));
         Name:= LoadStringFromModule(H, AppletInfo.idName);
         Desc:= LoadStringFromModule(H, AppletInfo.idInfo);

         // And display them
         Memo1.Lines.Add(Format('Applet No %d: %s / %s',
           [I, Name, Desc]));
       end;
     end;
   finally
     // Unload CPL
     FreeLibrary(H);
   end;
end;

procedure GetFileList( FileList: TStringList; inDir, Extension : String );
  procedure processSearchRec( aSearchRec : TSearchRec );
  begin
    if ( aSearchRec.Attr and faDirectory ) <> 0 then
    begin
      if ( aSearchRec.Name <> '.' ) and
         ( aSearchRec.Name <> '..' ) then
      begin
        FileList.Add( aSearchRec.Name );
        GetFileList( FileList, Extension, InDir + '\' + aSearchRec.Name );
      end;
    end
    else
      FileList.Add( aSearchRec.Name );
  end;

var CurDir : String;
  aSearchRec : TSearchRec;
begin
  CurDir := inDir + '\*.' + Extension;
  if FindFirst( CurDir, faAnyFile, aSearchRec ) = 0 then
  begin
    ProcessSearchRec( aSearchRec );
    while FindNext( aSearchRec ) = 0 do
      ProcessSearchRec( aSearchRec );
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  FL: TStringList;
  i : Integer;
begin
  Memo1.Lines.Clear;
  FL := TStringList.Create;
  try
    GetFileList( FL, 'c:\winnt\system32', 'cpl' );
    for i := 0 to Pred(FL.Count) do
      ShowCPLNameAndDescription(fl.Strings[i], Memo1);
  finally
    FL.Free;
  end;
end;

end.





211   [윈도우즈 API] 콤포넌트의 Hint 에 그림(Bitmap) 넣기  김영대 2003/04/11 5212 1359
210   [일반/컴포넌트] 키보드의 Shift+Tab 이 눌린것처럼 처리하기  김영대 2003/04/14 4753 1312
209   [윈도우즈 API] 폼이 Minimized 되었을때 깜박이게 하기 2  김영대 2003/04/14 6000 1322
208   [COM/OLE] 그리드 자료 엑셀로 좀더 빠르게 보내기  공성환 2003/04/16 5547 972
207   [일반/컴포넌트] C에서 한글자르기  공성환 2003/04/16 4865 971
206   [COM/OLE] 기존 Excel 문서 불러와서 편집후 저장하기  김영대 2003/04/18 5471 1290
205   [일반/컴포넌트] thread-safe Queue 구현  김영대 2003/08/18 6162 1357
204   [알고리즘] 숫자를 KB, MB, GB 단위로 환산하기  김영대 2003/11/13 5089 1167
203   [일반/컴포넌트] StrToFloatDef  김영대 2003/11/13 4986 1258
202   [알고리즘] 구분자(delimiter)를 사용한 문자열 파싱(parsing)  김영대 2003/11/13 5191 1147
201   [일반/컴포넌트] thread-safe Queue를 이용한 TLogThread  김영대 2003/11/18 4836 1139
200   [네트웍/인터넷] IOCP(I/O Completion Port) class  김영대 2003/11/18 11061 884
199   [네트웍/인터넷] Winsock WriteFile and Overlapped IO  김영대 2003/11/18 5449 1234
198   [시스템] 윈도우즈 서비스 목록 구하기  김영대 2004/07/22 4610 1234
197   [시스템] 윈도우즈 서비스 상태 구하기  김영대 2004/07/22 5026 1280
196   [시스템] 윈도우즈 서비스 시작/중지 하기  김영대 2004/07/22 6152 1551
195   [시스템] 윈도우즈 시스템의 스크롤바 두께 바꾸기  김영대 2004/07/24 5643 1380
194   [시스템] 마우스 아래의 윈도우 핸들 구하기  김영대 2004/07/24 9239 1716
193   [시스템] 내 프로그램의 실행 우선순의 바꾸기  김영대 2004/07/24 5145 1399
192   [윈도우즈 API] 내 프로그램의 화면을 가리는 프로그램 리스트  김영대 2004/07/24 4584 1210
191   [윈도우즈 API] Taskbar 의 특정 위치에 popup 메뉴 띄우기  김영대 2004/07/24 4618 1206
190   [윈도우즈 API] Taskbar 의 위치 추적하기  김영대 2004/07/24 4019 1072
189   [일반/컴포넌트] 윈도우즈"시작" 버튼위에 글씨 쓰기  김영대 2004/07/24 4206 1155
  [시스템] 제어판의 모든 applet 정보 구하기  김영대 2004/07/24 4443 1141
187   [윈도우즈 API] 바로 직전에 active 되었던 윈도우와 콘트롤 구하기  김영대 2004/07/24 4654 1171
186   [윈도우즈 API] 지원하는 키보드 입력 언어 구하고 변경하기  김영대 2004/07/24 4755 1272
185   [윈도우즈 API] 현재 키보드 입력 언어 구하기  김영대 2004/07/24 5008 1360
184   [COM/OLE] 윈도우즈 "작업 표시줄 및 시작 메뉴 등록 정보" 화면  김영대 2004/07/25 6096 1637
183   [COM/OLE] 윈도우즈 "인터넷 등록 정보" 화면  김영대 2004/07/25 4272 1327
182   [COM/OLE] 윈도우즈 "날짜/시간 등록 정보" 화면  김영대 2004/07/25 6418 1654
181   [COM/OLE] 윈도우즈 "검색: 파일 또는 폴더" 화면  김영대 2004/07/25 4995 1399
180   [COM/OLE] 윈도우즈 "시스템 종료" 화면  김영대 2004/07/25 4616 1312
179   [COM/OLE] 윈도우즈 "모든 창을 최소화"  김영대 2004/07/25 6255 1714
178   [일반/컴포넌트] TList 를 이용한 stack 구조 구현  김영대 2004/07/25 4385 1141
177   [윈도우즈 API] 폼에 애니메이션 효과 주기  김영대 2004/07/25 4667 1238
176   [일반/컴포넌트] 모서리가 둥근(rounded ends) TMemo 만들기  김영대 2004/07/25 4618 1190
175   [시스템] 로컬 가상 드라이버(substitution device) 만들고 제거하기  김영대 2004/07/25 6057 1330
174   [네트웍/인터넷] 네트워크 드라이브 연결 화면 띄우기  김영대 2004/07/26 5973 1606
173   [일반/컴포넌트] TProgressbar 의 색상 바꾸기  김영대 2004/07/26 4640 1240
172   [일반/컴포넌트] TTrewView, TListView 를 이미지로 저장하기  김영대 2004/07/26 4361 965

[이전 10개] [1]..[11][12][13][14][15][16][17][18][19] 20 ..[25] [다음 10개]
 

Copyright 1999-2022 Zeroboard / skin by zero