韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁(yè)面

Delphi編程完成程序快捷方式

Delphi編程完成程序快捷方式

更新時(shí)間:2022-10-14 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

★中共河南省濟(jì)源市委黨校,耿百?gòu)?qiáng)

摘要:本文主要介紹了用Delphi編程實(shí)現(xiàn)程序的快捷方式的方法,其中主要討論了Delphi中COM編程的方法、快捷方式的實(shí)現(xiàn)方法,并給出了一個(gè)實(shí)例程序。
關(guān)鍵詞:Delphi,COM編程,快捷方式

Windows系統(tǒng)提供了快捷方式來簡(jiǎn)化用戶對(duì)應(yīng)用程序的執(zhí)行,盡量使得用戶不與應(yīng)用程序的具體位置掛上關(guān)系,大大方便了用戶的操作。所以,在Windows系統(tǒng)下,大多安裝程序一般都提供創(chuàng)建程序組和快捷方式。但,你有沒有想過,快捷方式是如何實(shí)現(xiàn)的呢?
下面,我就和大家來討論一下關(guān)于快捷方式編程實(shí)現(xiàn)的原理,并給大家一個(gè)具體的示例程序。

一、 編程原理
1、首先找到快捷方式的存放位置,創(chuàng)建程序組。
在Windows系統(tǒng)下,所謂的程序組就是文件夾,只是這些文件夾的存放位置比較特殊罷了,一般存放在“D:\Documents and Settings\All Users.WINNT\「開始」菜單\程序”文件夾(在Windows2000下),你可以打開這個(gè)文件夾,是不是可以看到那些以前只能在“開始-程序”中才能看到的項(xiàng)目?!所以,必須首先得到快捷方式的存放位置,要解決這個(gè)問題,可以有兩種解決方法。
第一、通過Windows2000下的一個(gè)API函數(shù)來實(shí)現(xiàn):
HRESULT SHGetSpecialFolderLocation(
    HWND hwndOwner,
    int nFolder,
    LPITEMIDLIST *ppidl
   );
第二、通過注冊(cè)表來實(shí)現(xiàn),打開注冊(cè)表,然后依次打開“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders”,可以找到比如“開始菜單”、“程序”等文件夾的存放位置。
明白了程序組就是文件夾,要建立程序組就非常簡(jiǎn)單了,只要在找到的“程序”這個(gè)文件夾的位置中創(chuàng)建一個(gè)以“程序組”命名的文件夾就可以了。比如,我們把找到的“程序”所在的文件夾存放在Directory中,而程序組的名稱保存在GroupName中,下面的代碼可以實(shí)現(xiàn)在“程序”文件夾中創(chuàng)建“程序組”:
Directory := Reg.ReadString('Programs');
SubDir:= Directory+'\'+GroupName;
CreateDir(SubDir);
一般的應(yīng)用程序都會(huì)通過API函數(shù)來實(shí)現(xiàn),在本例中,我們通過第二種方法來實(shí)現(xiàn)。
2、創(chuàng)建快捷方式
解決了前面的兩個(gè)小問題,我們?cè)賮砜慈绾尉唧w實(shí)現(xiàn)快捷方式的創(chuàng)建。如果你經(jīng)常編寫程序,可能會(huì)想到利用API函數(shù)來實(shí)現(xiàn),不幸的是,你在API函數(shù)中找不到創(chuàng)建快捷方式的相應(yīng)函數(shù),因?yàn)檫@個(gè)功能需要用COM來實(shí)現(xiàn)。一些人可能會(huì)對(duì)COM編程感到陌生與恐懼,實(shí)際上,COM編程并不復(fù)雜,你不需要太了解COM就可以很好地使用它。
Windows提供了一個(gè)COM接口IshellLink,它能夠幫助我們創(chuàng)建、修改、刪除快捷方式。要使用COM接口提供的功能,必須首先調(diào)用CreateCOMObject函數(shù)創(chuàng)建一個(gè)接口的實(shí)例,Delphi提供了創(chuàng)建COM的一個(gè)基類Iunknown,具體的示例程序如下:
var
  MyObject : IUnknown; file://IUnknown是COM的基類
  MySLink : IShellLink;  file://用于創(chuàng)建快捷方式的對(duì)象
MyObject := CreateCOMObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
創(chuàng)建實(shí)例后,通過調(diào)用SetPath()方法設(shè)置快捷方式指向的源程序的路徑,快捷方式的存儲(chǔ)位置應(yīng)該是:“程序”的位置+程序組名稱+快捷方式名稱+擴(kuò)展名.lnk;通過SetDescription()方法設(shè)置快捷方式的描述,當(dāng)然你還可以調(diào)用比如SetHotKey()等方法設(shè)置熱鍵、顯示的圖標(biāo)(默認(rèn)為實(shí)際程序的圖標(biāo))等。實(shí)際上這個(gè)接口功能遠(yuǎn)不止這些,限于篇幅,直接略過。
設(shè)置完成的快捷方式并沒有保存到磁盤上,還必須通過IpersistFile對(duì)象的Save()方法來實(shí)現(xiàn)。如下面的代碼:
MyPFIle := MyObject as IPersistFile;
MyPFile.Save(PWChar(WFileName),True);
需要注意的是:快捷方式應(yīng)該使用Unicode存儲(chǔ),所以必須調(diào)用PWChar()函數(shù)將其轉(zhuǎn)換。

二、編程示例
下面,讓我們用Delphi6來編程實(shí)現(xiàn)一個(gè)簡(jiǎn)單的示例程序。程序的功能如下:你可以在窗口的三個(gè)文本框中輸入源程序的位置(也可以通過瀏覽按鈕來實(shí)現(xiàn))、程序組名稱和快捷方式名稱,通過下拉框來選擇快捷方式的存放位置,單擊“創(chuàng)建”按鈕可以創(chuàng)建程序組和快捷方式了。是不是很酷?心動(dòng)不如行動(dòng),讓我們一步一步來實(shí)現(xiàn)。
1、 啟動(dòng)Delphi6.0,打開一個(gè)新的標(biāo)準(zhǔn)工程。在窗體中添加所需的控件。
首先向窗體中添加四個(gè)Label對(duì)象、三個(gè)Edit對(duì)象、一個(gè)下拉框?qū)ο驝omboBox1、三個(gè)Button對(duì)象和一個(gè)OpenDialog對(duì)象。依次設(shè)置其相關(guān)屬性等,調(diào)整后的窗體界面如圖1所示。
<P><IMG BORDER="0" SRC=http://www.programfan.com/article/"http://www.jyzx.com/bbs/uploadImages/2002313434547824.jpg" WIDTH="412" HEIGHT="292"></P>

2、 向Tform1對(duì)象中新增一個(gè)函數(shù):
    function CreateShortcut(SourceFileName : string;  file://源程序的位置
    ShortcutName : string;    file://快捷方式的名稱
    ShortcutLocation : ShortcutType; file://快捷方式的建立位置
    SubDirectory : string      file://程序組的名稱
):Boolean;
其中ShortcutType是程序中自定義的一個(gè)枚舉類:
type
  ShortcutType=(_DESKTOP,  file://桌面
                _STARTMENU, file://開始菜單
                _PROGRAMS, file://程序
                _STARTUP,  file://啟動(dòng)
                _QUICKLAUNCH  file://快速啟動(dòng)欄
                );
CreateShortcut()函數(shù)用于實(shí)現(xiàn)快捷方式和程序組的創(chuàng)建,如果創(chuàng)建成功,則返回一個(gè)真值(True),否則返回為假值(False)。這可是本文中最重要的代碼段喲!
function TForm1.CreateShortcut(SourceFileName, ShortcutName: string;ShortcutLocation:ShortcutType; SubDirectory: string):boolean;
const
  REG_SHELLFOLDERS =
  'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders';
var
  MyObject : IUnknown; file://IUnknown是基本的COM類
  MySLink : IShellLink;  file://用于創(chuàng)建快捷方式的對(duì)象
  MyPFile : IPersistFile; file://用于保存快捷方式的對(duì)象
  SubDir,Directory,LinkName : string;
  WFileName : WideString;
  Reg : TRegistry;
begin
  Result:=False;
  MyObject := CreateCOMObject(CLSID_ShellLink); file://建立快捷方式的COM對(duì)象
  MySLink := MyObject as IShellLink;
  MyPFIle := MyObject as IPersistFile;
  MySLink.SetPath(pchar(SourceFileName)); file://設(shè)置快捷方式源文件的位置
  Reg := TRegistry.Create ;
  Reg.RootKey := HKEY_CURRENT_USER;
  try
    if Reg.OpenKey(REG_SHELLFOLDERS,false) then
    begin
      if SourceFileName<>'' then
        if ShortcutName <>'' then
           LinkName := ShortcutName
        else
           LinkName := ExtractFileName(SourceFileName)
      Else  file://當(dāng)源路徑是一個(gè)空值時(shí),實(shí)際它指向“我的電腦”
        LinkName := '我的電腦';

      MySLink.SetDescription(pchar(LinkName));  file://設(shè)置快捷方式描述
      LinkName := ChangeFileExt(LinkName,'.lnk');  file://修改擴(kuò)展名
      file://以下通過注冊(cè)表得到快捷方式的實(shí)際建立位置
      case ShortcutLocation of
      _DESKTOP : Directory := Reg.ReadString('Desktop');
      _STARTMENU : Directory := Reg.ReadString('Start Menu');
      _PROGRAMS: Directory := Reg.ReadString('Programs');
      _STARTUP : Directory := Reg.ReadString('Startup');
      _QUICKLAUNCH:Directory:=Reg.ReadString('AppData')+
                        '\Microsoft\Internet Explorer\Quick Launch';  file://快速啟動(dòng)欄的路徑比較特殊
      end;
      if Directory <> '' then
      begin
        if SubDirectory <> '' then
        begin
          SubDir:=Directory + '\'+ SubDirectory;
          WFileName := SubDir + '\' + LinkName  ;
          if not CreateDir(SubDir) then  file://創(chuàng)建目錄失敗
          begin
             Result:=false;
             Exit;
          end;
        end
        else
          WFileName := Directory + '\' + LinkName;
        if MyPFile.Save(PWChar(WFileName),True)<>S_OK then
        begin
          Result:=False;
          Exit;
        end
        else
          Result:=true;
       end
       else
         Result:=False;
      end;
    finally
      Reg.Free ; file://釋放空間
    end;
end;
3、 編寫瀏覽文件按鈕的代碼,如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
     Edit1.Text := OpenDialog1.FileName ;
end;
4、 同樣的步驟編寫“退出”按鈕的代碼:
procedure TForm1.Button3Click(Sender: TObject);
begin
  Close;
end;
5、 下面是“創(chuàng)建”按鈕的代碼,直接調(diào)用我們建立的CreateShoutcut()函數(shù)來實(shí)現(xiàn):
procedure TForm1.Button2Click(Sender: TObject);
var
  SLinkType : ShortcutType;
begin
  case ComboBox1.ItemIndex of
  0 : SLinkType := _DESKTOP;
  1 : SLinkType := _STARTMENU;
  2 : SLinkType := _PROGRAMS;
  3 : SLinkType := _STARTUP;
  4 : SLinkType := _QUICKLAUNCH;
  end;
  if CreateShortcut(Edit1.Text ,Edit3.Text ,SLinkType, Edit2.Text ) then
    Application.MessageBox(pchar('快捷方式創(chuàng)建成功!'),pchar('系統(tǒng)消息'),MB_OK)
  else
    Application.MessageBox(pchar('快捷方式創(chuàng)建失敗!'),pchar('系統(tǒng)消息'),MB_OK);
end;
現(xiàn)在按下F9編譯運(yùn)行這個(gè)程序,你就可以試試創(chuàng)建快捷方式的效果了。程序的運(yùn)行效果如圖2:
<P><IMG BORDER="0" SRC=http://www.programfan.com/article/"http://www.jyzx.com/bbs/uploadImages/20023134353019903.jpg" WIDTH="408" HEIGHT="290"></P>

當(dāng)然,你還可以把程序修改后用于你的安裝系統(tǒng),實(shí)現(xiàn)個(gè)性化的安裝程序,那種感覺一定酷畢了!
程序在Windows2000、Delphi6.0下編譯通過。

作者:耿百?gòu)?qiáng)
地址:中共河南省濟(jì)源市委黨校
郵政編碼:454650
聯(lián)系電話:0391-6666267
E-Mail:dxgbq@sohu.com
OICQ:10562208
寫稿日期:2002-3-12

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 中文字幕日韩精品一区二区| 午夜老司机精品| 亚洲最大福利网站| 精品按摩偷拍| 岛国av在线免费| 91麻豆天美传媒在线| 丰满湿润大白屁股bbw按摩| 日韩一级在线播放| 2222www色视频在线观看| 欧美性另类69xxxx| www.-级毛片线天内射视视| 亚洲午夜久久久久久久久| 黄色三级网站在线观看| 先锋成人影音| 91丨九色丨蝌蚪丨对白| www.av亚洲| 欧美性理论片在线观看片免费| 人妖精品videosex性欧美| 亚洲精品高清无码视频| 好吊色欧美一区二区三区| 欧美大片一区二区| 熟妇高潮一区二区三区| 国产精品久久久久久妇女6080| 成年人免费视频观看| 久久免费电影网| 国产又粗又猛又爽又黄| 人人做人人澡人人爽欧美| 国产一区欧美二区三区| 成品网站w灬+源码1| 亚洲福利国产精品| 国产成人av免费观看| 午夜在线激情影院| 欧美高清一级片在线| 极品尤物av久久免费看| 美女亚洲一区| 你懂的视频网址| 亚洲社区在线观看| 成人av三级| 91香蕉视频污在线| 这里只有精品在线播放| 国产乱视频在线观看| 黄色影院在线播放| 久久国内精品一国内精品| 欧美日韩精品一区二区三区蜜桃| 视频一区三区| 日韩高清在线一区| 亚洲精品suv精品一区二区| 99re热久久这里只有精品34| 你懂的视频一区二区| 国产91在线免费观看| 国产色a在线观看| 国产日韩欧美在线观看| 97高清免费视频| 欧美黑人在线观看| 日本一区二区三区在线视频| 欧美日韩综合久久| 午夜精品一区二区三区在线观看| 黄色av网站免费观看| 久久国产波多野结衣| 日本日本精品二区免费| 精品999在线播放| 别急慢慢来1978如如2| 伊人久久大香线蕉av超碰演员| 中文字幕av资源一区| 成人做爰www免费看视频网站| 欧美日韩精品一区二区三区视频| 成人手机电影网| 91国内精品久久| 97神马电影| 好吊一区二区三区| 亚洲影视资源| 成人不用播放器| 国产在线无码精品| 久久一区国产| 91蜜桃免费观看视频| 国产一级做a爰片在线看免费| 粉嫩粉嫩芽的虎白女18在线视频| 97超碰成人| 亚洲va久久久噜噜噜久久狠狠| 欧美亚洲国产成人精品| 一本一道精品欧美中文字幕| 国产成人a级片| 黄页网站在线观看免费| 私库av在线播放| 日本中文字幕在线播放| 亚洲国产精品电影在线观看| 中文字幕在线观看播放| 97视频免费在线| 成人黄在线观看| 日韩久久精品网| 国产精品人人爽人人做我的可爱| 欧美军同video69视频| 91免费版网站在线观看| 国产精品网址在线| 精品日本12videosex| 大地资源第二页在线观看高清版| 欧洲黄色一区| 国产香蕉久久精品综合网| 2020国产精品极品色在线观看| 国产成人无码一区二区在线观看| 狠狠激情五月综合婷婷俺| 天天爱天天做天天操| 久久伊人国产| 在线观看日产精品| 亚洲欧美偷拍三级| 国产精品va无码一区二区三区| 四虎影视在线播放| 国产欧美在线一区| 熟年交尾五十路视频在线播放| 在线欧美一级视频| 色帝国亚洲欧美在线| 91久久精品美女| 97色在线视频观看| 综合久久一区| 波多野结衣亚洲| 1stkiss在线漫画| 国模精品一区二区三区| 成人h动漫精品一区二区无码| 在线亚洲精品自拍| 欧美亚洲愉拍一区二区| 999免费视频| 一区二区三区免费看视频| 综合久久中文字幕| 中文字幕一区二区三区精品| 久久久久久网址| 国产精品亚洲片夜色在线| 韩国自拍一区| 国产精品免费看片| 粉嫩在线一区二区三区视频| 第四色在线视频| 精品视频—区二区三区免费| 五月综合久久| 亚洲成人久久久久| 中文字幕成在线观看| 一区二区三区四区高清精品免费观看| 国产性xxxx| fc2成人免费人成在线观看播放| 动漫美女无遮挡免费| 欧美丝袜丝交足nylons| av在线视屏| 在线视频一区二区三区四区| 曰本三级日本三级日本三级| 免费萌白酱国产一区二区三区| 欧美日韩破处视频| 麻豆电影在线| 99国产精品久久久久久久久久| 精品国产精品国产精品| jizzjizzxxxx| 中文字幕人妻一区二| 丝袜诱惑一区二区| 久久久久久久有限公司| 爽爽爽爽爽爽爽成人免费观看| 国产精品久久影院| 分分操这里只有精品| 亚洲影院色在线观看免费| 日韩一级在线免费观看| 国产成人在线视频观看| 91视频论坛| 亚洲国产天堂网精品网站| 黄色免费网站观看| 五月婷婷狠狠操| 国产女同在线观看| 成人h动漫精品一区| 激情五月播播久久久精品| 久久国内精品自在自线400部| 亚洲高清免费观看高清完整版在线观看| 8x8ⅹ国产精品一区二区二区| 一本—道久久a久久精品蜜桃| 国产欧美一区二区三区在线看| 久久久无码精品亚洲日韩按摩| 日本新janpanese乱熟| 亚洲精品在线网站| 久久久久国产精品视频| h版电影在线播放视频网站| 国产成人精品无码高潮| 日本在线观看a| 国产三级日本三级在线播放| 精品国产1区2区3区| 91精品婷婷国产综合久久性色| 精品福利网址导航| 亚洲日本护士毛茸茸| 国产香蕉成人综合精品视频| 国产自产高清不卡| 日本精品影院| 含羞草www国产在线视频| 黄网视频午夜青春| 李宗瑞91在线正在播放| 国产高清一区日本| 色欲av永久无码精品无码蜜桃| 国产a∨精品一区二区三区不卡| 成人有码视频在线播放| 欧美另类69xxx| 久久精品国产成人精品| 女人色偷偷aa久久天堂| 中文字幕免费在线看| 性一交一乱一伧老太| 在线免费av资源| 男男gay无套免费视频欧美| 91狠狠综合久久久久久| 亚洲国产精品久久91精品| 中文字幕在线视频一区| 欧美变态挠脚心| 欧美日韩第一视频| 欧美一区二粉嫩精品国产一线天| 青青青国产精品| 伊人久久国产精品| 91中文字幕精品永久在线| 久热精品视频在线观看| 日本a级片免费观看| 久久亚洲精精品中文字幕早川悠里| av素人天堂| 国产精品国产三级国产试看| caoporn国产精品| 欧美成人高清视频| 国产女人18毛片18精品| 中国av免费看| 亚洲免费看av| 欧美韩国日本精品一区二区三区| 日韩欧美国产三级电影视频| 日韩精品一区二区三区高清免费| 精品日韩视频在线观看| 8888四色奇米在线观看| 亚洲国产日韩在线一区| 牛牛澡牛牛爽一区二区| 麻豆久久久久久| 欧美性猛交xxxx免费看久久| www日本视频| 免费国产羞羞网站美图| aⅴ在线免费观看| 8x8x拔插拔插影库永久免费| 欧美在线观看你懂的| 成人ssswww在线播放| 成人超碰在线| 免费观看v片在线观看| 日韩一卡二卡在线观看| 精品电影在线| 久久精品国产一区二区| 免费福利在线视频| 456国产精品| 欧美野外猛男的大粗鳮| 亚洲美女av网站| 国精产品乱码一区一区三区四区| 亚洲黄色视屏| 亚洲精品蜜桃久久久久久| 国产精品8888| 风间由美中文字幕在线看视频国产欧美| 午夜精品久久久久久久99老熟妇| 日韩视频免费中文字幕| 欧美另类老肥妇| 艳母动漫在线观看| 亚洲乱码精品一二三四区日韩在线| 亚洲精品乱码久久久久久蜜桃图片| 中文字幕一区二区三区四| 在线播放亚洲精品| 国产成人8x视频一区二区| 精品国产免费一区二区三区香蕉| 一级黄色免费看| 激情黄色小视频| 欧美videosex性欧美黑吊| 黄色国产在线观看| 成人女性视频| 久久香蕉精品| av电影在线观看一区| 成人毛片免费在线观看| 9191成人精品久久| 日韩在线激情视频| 亚洲成人资源网| 黑人玩欧美人三根一起进| 中文字幕精品久久久久| 四虎影视1304t| 国产成人在线网址| 国产成人精品日本亚洲专区61| 久草视频在线资源| 美女视频久久久| 国产网红女主播精品视频| 免费的国产精品| 狠狠擦狠狠操| 日本免费一区二区三区| 国产男女无套在线播放| 欧美视频在线观看 亚洲欧| 蜜桃久久av一区| 男人天堂视频网| 欧美小视频在线| 精品久久人妻av中文字幕| 欧美中文在线字幕| 性xx十八spa按摩| 日韩视频免费在线播放| 亚洲精品动漫| 四虎地址8848精品| 国产精品xxx视频| 亚洲一卡二卡三卡四卡五卡| 国产精品久久久久久久久久白浆| 欧美一区二区观看视频| 2023国产精华国产精品| 亚洲国产欧美一区二区三区丁香婷| 久久人妻精品白浆国产| 国产精品99精品久久免费| 免费的黄网站在线观看| av手机免费在线观看| 日本午夜精品理论片a级app发布| 天天摸天天操天天爽| 国产一区二区久久| 91九色蝌蚪porny| 97超级碰碰人国产在线观看| 丝袜诱惑亚洲看片| 亚洲精品福利视频| 激情成人午夜视频| 日本黄色录像片| 亚洲精品毛片| 性做久久久久久免费观看| 国产99视频精品免视看7| 久久国产精品第一页| 波多野结衣人妻| 国产亚洲欧美一区在线观看| 亚洲福利一区二区三区| 色综合一区二区日本韩国亚洲| 99国产麻豆精品| 成人小电影网站| 亚洲男人天堂久| 18毛片免费看| 亚洲精选视频免费看| 无罩大乳的熟妇正在播放| 小说区亚洲自拍另类图片专区| 国产白丝一区二区三区| 中文字幕av一区 二区| 香蕉久久aⅴ一区二区三区| 亚洲欧洲精品在线|