Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
단축 아이콘을 만드려면?
exe파일의 단축 아이콘을 생성해서 특정폴더(바탕화면등..)안에
넣어 두려고 하는데 어찌해야 하나요?
질문 답변란을 뒤져봐도 못 찾겠네요..
4
COMMENTS
류종택
•
2000.03.16 02:04
천리안 프로그래머 포럼에서 주어왔습니다..
From 류..
---------
unit Link;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Ole2, Oleauto, ShellAPI, ShlObj;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
procedure MakeLink(Location : Word);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure CreateShellLink(sDesc,
sLinkToFileName,
sStartIn,
sArguments,
sIconPath,
sLinkName : String;
iIconIndex : Integer);
var
sl : IShellLink;
ppf : IPersistFile;
wcLinkName : Array[0..MAX_PATH] of WideChar;
begin
OleCheck(CoInitialize(nil));
OleCheck(
CoCreateInstance(CLSID_ShellLink, nil,
CLSCTX_INPROC_SERVER, IID_IShellLink, sl)
);
OleCheck(sl.QueryInterface(IID_IPersistFile, ppf));
OleCheck(sl.SetDescription(PChar(sDesc)));
OleCheck(sl.SetPath(PChar(sLinkToFileName)));
OleCheck(sl.SetWorkingDirectory(PChar(sStartIn)));
OleCheck(sl.SetArguments(PChar(sArguments)));
OleCheck(sl.SetIconLocation(PChar(sIconPath), iIconIndex));
MultiByteToWideChar(CP_ACP, 0, PChar(sLinkName), -1,
wcLinkName, MAX_PATH);
OleCheck(ppf.Save(wcLinkName, true));
CoUninitialize;
end;
procedure GetFolderPath(var sPath : String; iFolder : Integer);
var
iID : PItemIDList;
szPath : PChar;
begin
szPath := StrAlloc(MAX_PATH);
if SHGetSpecialFolderLocation(Application.Handle, iFolder, iID)
= NOERROR then
begin
SHGetPathFromIDList(iID, szPath);
sPath := szPath;
end;
StrDispose(szPath);
end;
function IconOfFile(const FileName : String; IconID : Integer) : THandle;
// 파일의 아이콘을 얻어내는 함수.
// IconID = SHGFI_LARGEICON : 32X32, SHGFI_SMALLICON : 16X16
var
SHFileInfo : TSHFileInfo;
begin
SHGetFileInfo(PChar(FileName), 0, SHFileInfo, SizeOf(SHFileInfo),
IconID or SHGFI_ICON);
Result := SHFileInfo.hIcon;
end;
procedure TForm1.MakeLink(Location : Word);
var
sDeskTopPath, sLinkPath : String;
begin
if OpenDialog1.FileName = '' then Exit;
GetFolderPath(sDeskTopPath, Location);
sLinkPath := sDeskTopPath + '' +
ExtractFileName(OpenDialog1.FileName) + '.lnk';
CreateShellLink('',
OpenDialog1.FileName,
ExtractFilePath(OpenDialog1.FileName),
Edit1.Text,
OpenDialog1.FileName,
sLinkPath,
0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Label2.Caption := ExtractFileName(OpenDialog1.FileName);
Image1.Picture.Icon.Handle
:= IconOfFile(OpenDialog1.FileName, SHGFI_LARGEICON);
end
else
begin
OpenDialog1.FileName := '';
Label2.Caption := '';
Image1.Picture.Assign(nil);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
MakeLink(CSIDL_DESKTOP);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
MakeLink(CSIDL_PROGRAMS);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
MakeLink(CSIDL_STARTMENU);
end;
end.
초보 wrote:
> exe파일의 단축 아이콘을 생성해서 특정폴더(바탕화면등..)안에
> 넣어 두려고 하는데 어찌해야 하나요?
> 질문 답변란을 뒤져봐도 못 찾겠네요..
>
0
0
삭제
수정
댓글
초보
•
2000.03.17 10:27
류종택님 답변 감사드립니다만.
답변 주신 소스를 보고 어떻게 해야할지 막막하네요 복사해서 실행해도
라이브러리도 없고 또 델파이에서 기본으로 제공하지 않는 놈도 있는것 같은데..
단축 아이콘 생성법과 그 단축 아이콘을 특정 폴더로 옮겨 놓는 두가지만 알면 되겠군요...
보다 이해하기 쉽고 간단한 방법은 없는건가요?
제가 워낙 몰라서 주석도 없는 소스를 이해하기란 한계가 있습니다...^^
소스를 이해 못해서 죄송하군요..
류종택 wrote:
> 천리안 프로그래머 포럼에서 주어왔습니다..
>
>
> From 류..
>
> ---------
>
> unit Link;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> StdCtrls, ExtCtrls, Ole2, Oleauto, ShellAPI, ShlObj;
>
> type
> TForm1 = class(TForm)
> OpenDialog1: TOpenDialog;
> Button1: TButton;
> Button2: TButton;
> Button3: TButton;
> Button4: TButton;
> Edit1: TEdit;
> Label1: TLabel;
> Label2: TLabel;
>
> Image1: TImage;
> procedure Button1Click(Sender: TObject);
> procedure Button2Click(Sender: TObject);
> procedure Button3Click(Sender: TObject);
> procedure Button4Click(Sender: TObject);
> private
> { Private declarations }
> procedure MakeLink(Location : Word);
> public
> { Public declarations }
> end;
>
> var
> Form1: TForm1;
>
> implementation
>
> {$R *.DFM}
>
> procedure CreateShellLink(sDesc,
> sLinkToFileName,
> sStartIn,
> sArguments,
> sIconPath,
> sLinkName : String;
> iIconIndex : Integer);
> var
> sl : IShellLink;
> ppf : IPersistFile;
> wcLinkName : Array[0..MAX_PATH] of WideChar;
> begin
> OleCheck(CoInitialize(nil));
> OleCheck(
>
> CoCreateInstance(CLSID_ShellLink, nil,
> CLSCTX_INPROC_SERVER, IID_IShellLink, sl)
> );
>
> OleCheck(sl.QueryInterface(IID_IPersistFile, ppf));
>
> OleCheck(sl.SetDescription(PChar(sDesc)));
> OleCheck(sl.SetPath(PChar(sLinkToFileName)));
> OleCheck(sl.SetWorkingDirectory(PChar(sStartIn)));
> OleCheck(sl.SetArguments(PChar(sArguments)));
> OleCheck(sl.SetIconLocation(PChar(sIconPath), iIconIndex));
>
> MultiByteToWideChar(CP_ACP, 0, PChar(sLinkName), -1,
>
> wcLinkName, MAX_PATH);
>
> OleCheck(ppf.Save(wcLinkName, true));
>
> CoUninitialize;
> end;
>
> procedure GetFolderPath(var sPath : String; iFolder : Integer);
> var
> iID : PItemIDList;
> szPath : PChar;
> begin
> szPath := StrAlloc(MAX_PATH);
> if SHGetSpecialFolderLocation(Application.Handle, iFolder, iID)
> = NOERROR then
> begin
> SHGetPathFromIDList(iID, szPath);
> sPath := szPath;
>
> end;
> StrDispose(szPath);
> end;
>
> function IconOfFile(const FileName : String; IconID : Integer) : THandle;
> // 파일의 아이콘을 얻어내는 함수.
> // IconID = SHGFI_LARGEICON : 32X32, SHGFI_SMALLICON : 16X16
> var
> SHFileInfo : TSHFileInfo;
> begin
> SHGetFileInfo(PChar(FileName), 0, SHFileInfo, SizeOf(SHFileInfo),
> IconID or SHGFI_ICON);
> Result := SHFileInfo.hIcon;
> end;
>
> procedure TForm1.MakeLink(Location : Word);
>
> var
> sDeskTopPath, sLinkPath : String;
> begin
> if OpenDialog1.FileName = '' then Exit;
> GetFolderPath(sDeskTopPath, Location);
> sLinkPath := sDeskTopPath + '' +
> ExtractFileName(OpenDialog1.FileName) + '.lnk';
>
> CreateShellLink('',
> OpenDialog1.FileName,
> ExtractFilePath(OpenDialog1.FileName),
> Edit1.Text,
> OpenDialog1.FileName,
> sLinkPath,
>
> 0);
> end;
>
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> if OpenDialog1.Execute then
> begin
> Label2.Caption := ExtractFileName(OpenDialog1.FileName);
> Image1.Picture.Icon.Handle
> := IconOfFile(OpenDialog1.FileName, SHGFI_LARGEICON);
> end
> else
> begin
> OpenDialog1.FileName := '';
> Label2.Caption := '';
> Image1.Picture.Assign(nil);
>
> end;
> end;
>
> procedure TForm1.Button2Click(Sender: TObject);
> begin
> MakeLink(CSIDL_DESKTOP);
> end;
>
> procedure TForm1.Button3Click(Sender: TObject);
> begin
> MakeLink(CSIDL_PROGRAMS);
> end;
>
> procedure TForm1.Button4Click(Sender: TObject);
> begin
> MakeLink(CSIDL_STARTMENU);
> end;
>
> end.
>
>
>
> 초보 wrote:
> > exe파일의 단축 아이콘을 생성해서 특정폴더(바탕화면등..)안에
> > 넣어 두려고 하는데 어찌해야 하나요?
> > 질문 답변란을 뒤져봐도 못 찾겠네요..
> >
0
0
삭제
수정
댓글
모질이
•
2000.07.31 22:24
바탕화면에 단축아이콘을 만들려면
인스톨쉴드에서 간단하게 할수가 있거덜랑요.
specify folders and icons에서
조금의 조작만 하면 바탕화면(기타등등)에 단축아이콘을 만들수가 있습니다.
초보 wrote:
> 류종택님 답변 감사드립니다만.
> 답변 주신 소스를 보고 어떻게 해야할지 막막하네요 복사해서 실행해도
> 라이브러리도 없고 또 델파이에서 기본으로 제공하지 않는 놈도 있는것 같은데..
> 단축 아이콘 생성법과 그 단축 아이콘을 특정 폴더로 옮겨 놓는 두가지만 알면 되겠군요...
> 보다 이해하기 쉽고 간단한 방법은 없는건가요?
> 제가 워낙 몰라서 주석도 없는 소스를 이해하기란 한계가 있습니다...^^
> 소스를 이해 못해서 죄송하군요..
>
>
>
> 류종택 wrote:
> > 천리안 프로그래머 포럼에서 주어왔습니다..
> >
> >
> > From 류..
> >
> > ---------
> >
> > unit Link;
> >
> > interface
> >
> > uses
> > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> > StdCtrls, ExtCtrls, Ole2, Oleauto, ShellAPI, ShlObj;
> >
> > type
> > TForm1 = class(TForm)
> > OpenDialog1: TOpenDialog;
> > Button1: TButton;
> > Button2: TButton;
> > Button3: TButton;
> > Button4: TButton;
> > Edit1: TEdit;
> > Label1: TLabel;
> > Label2: TLabel;
> >
> > Image1: TImage;
> > procedure Button1Click(Sender: TObject);
> > procedure Button2Click(Sender: TObject);
> > procedure Button3Click(Sender: TObject);
> > procedure Button4Click(Sender: TObject);
> > private
> > { Private declarations }
> > procedure MakeLink(Location : Word);
> > public
> > { Public declarations }
> > end;
> >
> > var
> > Form1: TForm1;
> >
> > implementation
> >
> > {$R *.DFM}
> >
> > procedure CreateShellLink(sDesc,
> > sLinkToFileName,
> > sStartIn,
> > sArguments,
> > sIconPath,
> > sLinkName : String;
> > iIconIndex : Integer);
> > var
> > sl : IShellLink;
> > ppf : IPersistFile;
> > wcLinkName : Array[0..MAX_PATH] of WideChar;
> > begin
> > OleCheck(CoInitialize(nil));
> > OleCheck(
> >
> > CoCreateInstance(CLSID_ShellLink, nil,
> > CLSCTX_INPROC_SERVER, IID_IShellLink, sl)
> > );
> >
> > OleCheck(sl.QueryInterface(IID_IPersistFile, ppf));
> >
> > OleCheck(sl.SetDescription(PChar(sDesc)));
> > OleCheck(sl.SetPath(PChar(sLinkToFileName)));
> > OleCheck(sl.SetWorkingDirectory(PChar(sStartIn)));
> > OleCheck(sl.SetArguments(PChar(sArguments)));
> > OleCheck(sl.SetIconLocation(PChar(sIconPath), iIconIndex));
> >
> > MultiByteToWideChar(CP_ACP, 0, PChar(sLinkName), -1,
> >
> > wcLinkName, MAX_PATH);
> >
> > OleCheck(ppf.Save(wcLinkName, true));
> >
> > CoUninitialize;
> > end;
> >
> > procedure GetFolderPath(var sPath : String; iFolder : Integer);
> > var
> > iID : PItemIDList;
> > szPath : PChar;
> > begin
> > szPath := StrAlloc(MAX_PATH);
> > if SHGetSpecialFolderLocation(Application.Handle, iFolder, iID)
> > = NOERROR then
> > begin
> > SHGetPathFromIDList(iID, szPath);
> > sPath := szPath;
> >
> > end;
> > StrDispose(szPath);
> > end;
> >
> > function IconOfFile(const FileName : String; IconID : Integer) : THandle;
> > // 파일의 아이콘을 얻어내는 함수.
> > // IconID = SHGFI_LARGEICON : 32X32, SHGFI_SMALLICON : 16X16
> > var
> > SHFileInfo : TSHFileInfo;
> > begin
> > SHGetFileInfo(PChar(FileName), 0, SHFileInfo, SizeOf(SHFileInfo),
> > IconID or SHGFI_ICON);
> > Result := SHFileInfo.hIcon;
> > end;
> >
> > procedure TForm1.MakeLink(Location : Word);
> >
> > var
> > sDeskTopPath, sLinkPath : String;
> > begin
> > if OpenDialog1.FileName = '' then Exit;
> > GetFolderPath(sDeskTopPath, Location);
> > sLinkPath := sDeskTopPath + '' +
> > ExtractFileName(OpenDialog1.FileName) + '.lnk';
> >
> > CreateShellLink('',
> > OpenDialog1.FileName,
> > ExtractFilePath(OpenDialog1.FileName),
> > Edit1.Text,
> > OpenDialog1.FileName,
> > sLinkPath,
> >
> > 0);
> > end;
> >
> >
> > procedure TForm1.Button1Click(Sender: TObject);
> > begin
> > if OpenDialog1.Execute then
> > begin
> > Label2.Caption := ExtractFileName(OpenDialog1.FileName);
> > Image1.Picture.Icon.Handle
> > := IconOfFile(OpenDialog1.FileName, SHGFI_LARGEICON);
> > end
> > else
> > begin
> > OpenDialog1.FileName := '';
> > Label2.Caption := '';
> > Image1.Picture.Assign(nil);
> >
> > end;
> > end;
> >
> > procedure TForm1.Button2Click(Sender: TObject);
> > begin
> > MakeLink(CSIDL_DESKTOP);
> > end;
> >
> > procedure TForm1.Button3Click(Sender: TObject);
> > begin
> > MakeLink(CSIDL_PROGRAMS);
> > end;
> >
> > procedure TForm1.Button4Click(Sender: TObject);
> > begin
> > MakeLink(CSIDL_STARTMENU);
> > end;
> >
> > end.
> >
> >
> >
> > 초보 wrote:
> > > exe파일의 단축 아이콘을 생성해서 특정폴더(바탕화면등..)안에
> > > 넣어 두려고 하는데 어찌해야 하나요?
> > > 질문 답변란을 뒤져봐도 못 찾겠네요..
> > >
0
0
삭제
수정
댓글
최용일
•
2000.03.16 14:49
한델의 강좌란을 보세요...
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
오종환
•
2000.03.16 03:02
1
COMMENTS
/
0
LIKES
팝업메뉴에 대해서
구창민
•
2000.03.16 03:10
오종환 wrote: > 저는 델파이를 막 접한 초보입니다 > > 제가 원하는것은 SpeedButton으로 기존의 메뉴...
J Wraw
•
2000.03.16 02:42
1
COMMENTS
/
0
LIKES
DB 연결시 error handle 하는방법 좀 알려주세요?
빡수홍
•
2000.03.16 03:53
J Wraw wrote: > MSSQL6.5를 쓰고있는데 DB connection시 UserId혹은 Password가 잘못입력시 > EDBEEngi...
양은주
•
2000.03.16 02:34
1
COMMENTS
/
0
LIKES
[컴포넌트]컴포넌트 제작에 관한 질문 입니다.
최용일
•
2000.03.16 03:11
메소드가 아니라 일반 프로시저나 펑션에서 호출하는 방법을 묻는 것입니까? 뭐 여러가지 방법이 있겠지만...
강동길
•
2000.03.16 02:01
1
COMMENTS
/
0
LIKES
table에 관한 질문있어요...
류종택
•
2000.03.16 02:11
Calulated Field를 사용하세요.. Table을 더블클릭하시고 생긴 윈도우에서 오른쪽 마우스 클릭.. Add All...
김진석
•
2000.03.16 01:55
2
COMMENTS
/
0
LIKES
다단 복수 타이틀 그리드 있나요????
blueSky
•
2000.03.16 02:51
김진석 wrote: > 프로그램을 짜다 보니깐.... | 신 문| > ...
조피디
•
2000.03.16 02:00
김진석 wrote: > 프로그램을 짜다 보니깐.... | 신 문| > ...
초보
•
2000.03.16 01:44
4
COMMENTS
/
0
LIKES
단축 아이콘을 만드려면?
exe파일의 단축 아이콘을 생성해서 특정폴더(바탕화면등..)안에 넣어 두려고 하는데 어찌해야 하나요? 질문 답변란을 뒤져봐도 못 찾겠네요..
류종택
•
2000.03.16 02:04
천리안 프로그래머 포럼에서 주어왔습니다.. From 류.. --------- unit Link; interface ...
초보
•
2000.03.17 10:27
류종택님 답변 감사드립니다만. 답변 주신 소스를 보고 어떻게 해야할지 막막하네요 복사해서 실행해도 ...
모질이
•
2000.07.31 22:24
바탕화면에 단축아이콘을 만들려면 인스톨쉴드에서 간단하게 할수가 있거덜랑요. specify folders and ic...
최용일
•
2000.03.16 14:49
한델의 강좌란을 보세요...
한현정
•
2000.03.16 01:13
4
COMMENTS
/
0
LIKES
프로그램 종료전에 만든 excel이 안 읽혀요
하윤철
•
2000.04.12 21:40
답을 얻으셨나요? 꽤 늦은 답입니다만.... 변환 작업 후에 프로그램 종료시점까지 Excell 인스턴스종료로...
최용일
•
2000.03.16 01:28
아마도 열기 전에 저장을 안하신것 같은데... 대강 코드를 보니까 프로그램을 종료할 때 만들어진 엑셀...
한현정
•
2000.03.16 02:08
아래 소스는 컴포넌트의 소스입니다. 호출할 때는 아래와 같이 하구요 MsgBar1.ShowMessage('excel...
최용일
•
2000.03.16 05:01
제가 김영대님의 TGridXLS컴포넌트를 써보지 못해서 제대로 답변을 못드리겠군요. 김영대님에게 메일을 보...
국경훈
2000.03.16 00:40
0
COMMENTS
/
0
LIKES
[긴급]gif image 출력에 관한 질문
topsman
•
2000.03.16 00:35
2
COMMENTS
/
0
LIKES
현재의 OS 정보를 알려면...
blueSky
•
2000.03.16 01:17
topsman wrote: > 현재 사용자가 사용하고 있는 OS가 어떤건지 알려면... > > 어떤 함수를 써서...정보...
하얀까마귀
•
2000.03.16 01:03
안녕하세요 하얀까마귀 입니다. 그런 정보는 레지스트리에 있어요... HKEY_LOCAL_MACHINE SoftwareM...
조영태
2000.03.16 00:12
0
COMMENTS
/
0
LIKES
알바하실분---[ 내써버 ]
혀노
2000.03.15 23:58
0
COMMENTS
/
0
LIKES
퀵레포트 미리보기시 메인폼이 앞에 나옴
이영일
2000.03.15 23:19
0
COMMENTS
/
0
LIKES
[재질문] DB공유에 관하여 제발 부탁....
전진배
•
2000.03.15 23:17
1
COMMENTS
/
0
LIKES
QRCompositeReport 사용시 customer preview 사용방법?
하얀까마귀
•
2000.03.16 00:53
안녕하세요 하얀까마귀 입니다. 이건 전에 제가 비슷한 내용을 올린것 같은데.... 어디 올렸지???? ...
문영봉
•
2000.03.15 23:16
2
COMMENTS
/
0
LIKES
tregistry 에 대하여 좀.. 알려주세요
류종택
•
2000.03.16 00:08
현재 위치에서 'f1'이라는 키를 오픈하는 것입니다.. 뒤에오는 불린은 해당 키가 없을 때 생성을 할 것인...
최용일
•
2000.03.16 00:03
OpenKey는 레지스트리에 있는 키값을 열때 사용합니다. TRegistry서 값을 읽거나 쓰는 함수(TRegistry.Rea...
hjcho
2000.03.15 23:08
0
COMMENTS
/
0
LIKES
도와주세요.
윤정선
•
2000.03.15 23:07
3
COMMENTS
/
0
LIKES
기존의 DLL을 동적 호출할 수 있는 방법이 없는지요.
최용일
•
2000.03.15 23:54
동적으로 링크하는 방법도 있습니다. LoadLibrary함수를 DLL을 적재하시면 됩니다. 성공적으로 적재되었...
윤정선
•
2000.03.17 01:25
자세한 설명을 부탁드려도 되는지요. 저는 LoadLibrary와 FreeLibrary를 이용해서 해볼려고 했는데 안되...
최용일
•
2000.03.17 06:14
안녕하세요. 최용일입니다. 먼저 헬프를 사용하는 방법부터 알려드리지요. GetProcAddress과 같은 Windo...
neocity
•
2000.03.15 22:34
1
COMMENTS
/
0
LIKES
돔을 필요합니다.
화랑
•
2000.03.16 02:59
neocity wrote: > 다중 채팅을 만들었는데. > 여러 채팅 프로그램처럼 여러개의 방을 만들려구 하는데 >...
topsman
•
2000.03.15 22:27
3
COMMENTS
/
0
LIKES
procedure나 function에서 임의의 지점에서 return하는 방법...
하얀까마귀
•
2000.03.16 00:38
안녕하세요 하얀까마귀 입니다. c하고는 문법이 조금 다르죠... c를 windows c++을 하셧는지는 모르...
백록화
•
2000.03.16 00:22
yo~ ^^*^~ exit나 break 같은 제어문을 적절히 사용하시면 됩니다. exit는 그냥 중단하는것이고..... ...
강인규
•
2000.03.15 22:39
우선 저는 C는 못합니다. 그점 염두하시고 보아주시기 바랍니다. return이 어떤 형태로 작업열로 복귀하...
홍종숙.....
2000.03.15 21:34
0
COMMENTS
/
0
LIKES
안녕하세요.전 컴퓨터 관련학과에 재학중인 학생입니다
이수정
•
2000.03.15 21:25
1
COMMENTS
/
0
LIKES
컴포넌트 파일을 어떻게 사용하는지요..?
blueSky
•
2000.03.15 22:24
이수정 wrote: > 다른데 자료실에서.. 컴포넌트 파일이라며.. > > .pas 파일 두개를 받았는데.. > ...
초보
2000/03/16 01:44
Views
149
Likes
0
Comments
4
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
From 류..
---------
unit Link;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Ole2, Oleauto, ShellAPI, ShlObj;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
procedure MakeLink(Location : Word);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure CreateShellLink(sDesc,
sLinkToFileName,
sStartIn,
sArguments,
sIconPath,
sLinkName : String;
iIconIndex : Integer);
var
sl : IShellLink;
ppf : IPersistFile;
wcLinkName : Array[0..MAX_PATH] of WideChar;
begin
OleCheck(CoInitialize(nil));
OleCheck(
CoCreateInstance(CLSID_ShellLink, nil,
CLSCTX_INPROC_SERVER, IID_IShellLink, sl)
);
OleCheck(sl.QueryInterface(IID_IPersistFile, ppf));
OleCheck(sl.SetDescription(PChar(sDesc)));
OleCheck(sl.SetPath(PChar(sLinkToFileName)));
OleCheck(sl.SetWorkingDirectory(PChar(sStartIn)));
OleCheck(sl.SetArguments(PChar(sArguments)));
OleCheck(sl.SetIconLocation(PChar(sIconPath), iIconIndex));
MultiByteToWideChar(CP_ACP, 0, PChar(sLinkName), -1,
wcLinkName, MAX_PATH);
OleCheck(ppf.Save(wcLinkName, true));
CoUninitialize;
end;
procedure GetFolderPath(var sPath : String; iFolder : Integer);
var
iID : PItemIDList;
szPath : PChar;
begin
szPath := StrAlloc(MAX_PATH);
if SHGetSpecialFolderLocation(Application.Handle, iFolder, iID)
= NOERROR then
begin
SHGetPathFromIDList(iID, szPath);
sPath := szPath;
end;
StrDispose(szPath);
end;
function IconOfFile(const FileName : String; IconID : Integer) : THandle;
// 파일의 아이콘을 얻어내는 함수.
// IconID = SHGFI_LARGEICON : 32X32, SHGFI_SMALLICON : 16X16
var
SHFileInfo : TSHFileInfo;
begin
SHGetFileInfo(PChar(FileName), 0, SHFileInfo, SizeOf(SHFileInfo),
IconID or SHGFI_ICON);
Result := SHFileInfo.hIcon;
end;
procedure TForm1.MakeLink(Location : Word);
var
sDeskTopPath, sLinkPath : String;
begin
if OpenDialog1.FileName = '' then Exit;
GetFolderPath(sDeskTopPath, Location);
sLinkPath := sDeskTopPath + '' +
ExtractFileName(OpenDialog1.FileName) + '.lnk';
CreateShellLink('',
OpenDialog1.FileName,
ExtractFilePath(OpenDialog1.FileName),
Edit1.Text,
OpenDialog1.FileName,
sLinkPath,
0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Label2.Caption := ExtractFileName(OpenDialog1.FileName);
Image1.Picture.Icon.Handle
:= IconOfFile(OpenDialog1.FileName, SHGFI_LARGEICON);
end
else
begin
OpenDialog1.FileName := '';
Label2.Caption := '';
Image1.Picture.Assign(nil);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
MakeLink(CSIDL_DESKTOP);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
MakeLink(CSIDL_PROGRAMS);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
MakeLink(CSIDL_STARTMENU);
end;
end.
초보 wrote:
> exe파일의 단축 아이콘을 생성해서 특정폴더(바탕화면등..)안에
> 넣어 두려고 하는데 어찌해야 하나요?
> 질문 답변란을 뒤져봐도 못 찾겠네요..
>