用BCB在windows桌面建立快捷方式 (轉)
提供了一個叫做ILink的COM介面允許我們建立快捷方式。為在桌面建立快捷方式,我們建立一個IShellLink,設定它的屬性,然後把這個link儲存到desktop目錄。
下面的例子程式碼演示了怎樣建立一個快捷方式。在這個例子裡,這個快捷方式儲存在C:Drive目錄下。//----------------------------------------------------------------------
include
void __fastcall TForm1::Button1Click(T *Sender)
{
if(OpenDialog1->Execute())
CreateShortCut(OpenDialog1->FileName);
}
void TForm1::CreateShortCut(const AnsiString &file)
{
IShellLink* pLink;
IPersistFile* pPersistFile;
if(SUCCEEDED(CoInitialize(NULL)))
{
if(SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER,
IID_IShellLink, (void **) &pLink)))
{
pLink->SetPath(file.c_str());
pLink->SetDescription("Woo hoo, look at Homer's shortcut");
pLink->SetShowCmd(SW_SHOW);
if(SUCCEEDED(pLink->QueryInterface(IID_IPersistFile,
(void **)&pPersistFile)))
{
WString strShortCutLocation("C:bcbshortcut.lnk");
pPersistFile->Save(strShortCutLocation.c_bstr(), TRUE);
pPersistFile->Release();
}
pLink->Release();
}
CoUninitialize();
}
}
上面的例子只是把快捷方式儲存到了c:drive目錄下,但沒儲存到desktop目錄下。
要讓快捷方式出現在桌面上,只須把快捷方式檔案儲存到desktop目錄下。首先我們要找到的desktop目錄,請參閱判斷windows的Desktop及相關目錄這一節。一旦我們知道了desktop所在的目錄,我們就能將快捷方式檔案儲存到desktop目錄下。然後windows就能將快捷方式圖示顯示到桌面上。下面是經過改進了的例子:
void TForm1::CreateShortCut(const AnsiString &file)
{
IShellLink* pLink;
IPersistFile* pPersistFile;
LPMALLOC ShellMalloc;
LPITEMIDLIST DesktopPidl;
char DesktopDir[MAX_PATH];
if(FAILED(SHGetMalloc(&ShellMalloc)))
return;
if(FAILED(SHGetSpecialFolderLocation(NULL,
CSIDL_DESKTOPDIRECTORY,
&DesktopPidl)))
return;
if(!SHGetPathFromIDList(DesktopPidl, DesktopDir))
{
ShellMalloc->Free(DesktopPidl);
ShellMalloc->Release();
return;
}
ShellMalloc->Free(DesktopPidl);
ShellMalloc->Release();
if(SUCCEEDED(CoInitialize(NULL)))
{
if(SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER,
IID_IShellLink, (void **) &pLink)))
{
pLink->SetPath(file.c_str());
pLink->SetDescription("Woo hoo, look at Homer's shortcut");
pLink->SetShowCmd(SW_SHOW);
if(SUCCEEDED(pLink->QueryInterface(IID_IPersistFile,
(void **)&pPersistFile)))
{
WideString strShortCutLocation(DesktopDir);
strShortCutLocation += "bcbshortcut.lnk";
pPersistFile->Save(strShortCutLocation.c_bstr(), TRUE);
pPersistFile->Release();
}
pLink->Release();
}
CoUninitialize();
}
}
不要陷於COM的泥沼之中
建立快捷方式包括一些對COM的使用。不要讓你陷入到COM的複雜之中。COM只是建立和使用物件的一種方法。在這個例子裡我們可以考慮不使用COM而是用等價的C++技術。code C++ psuedo-equivalent
IShellLink* pLink; TShellLink *Link;
IPersistFile* pPersistFile; TPersistFile *PersistFile;
CoInitialize();
CoCreateInstance(CLSID_ShellLink, Link = new TShellLink;
NULL,
CLSCTX_INPROC_SERVER,
IID_IShellLink,
(void **) &pLink)
pLink->SetPath(file.c_str()); Link->SetPath(file.c_str());
pLink->SetShowCmd(SW_SHOW); Link->SetShowCmd(SW_SHOW);
pLink->QueryInterface(IID_IPersistFile PersistFile =
(void **)&pPersistFile))) dynamic_cast
pPersistFile->Save("C:", TRUE); PersistFile->Save("C:");
pPersistFile->Release(); delete PersistFile
pLink->Release(); delete Link;
CoUninitialize();
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989079/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用java 能建立桌面快捷方式嗎?Java
- win10怎麼建立快捷方式_windows10建立桌面快捷方式的方法Win10Windows
- iOS APP建立桌面快捷方式iOSAPP
- 用好Windows快捷方式【轉】Windows
- BCB中實現動態建立元件 (轉)元件
- win10怎麼建立桌面快捷方式_win10新增程式快捷方式到桌面的步驟Win10
- 在.NET的Windows桌面應用中使用Amazon的Web Services (轉)WindowsWeb
- 利用izpack或roxes在windows下建立快捷方式的亂碼問題Windows
- Robot Framework-Ride建立桌面快捷方式(最簡單!)FrameworkIDE
- 應用 WSH 讀寫登錄檔和建立快捷方式 (轉)
- window10怎麼顯示桌面_windows10桌面切換快捷方式Windows
- 網頁快捷方式怎麼設定_win10如何建立網頁桌面快捷方式網頁Win10
- 在Delphi中操作快捷方式 (轉)
- Win10怎麼建立還原點快捷方式 Win10系統桌面建立還原點快捷方式的方法Win10
- 如何用WinCE CabManager製作的cab檔案,建立桌面快捷方式?
- 如何在 Ubuntu 桌面手動新增應用快捷方式Ubuntu
- iOS新增快捷方式到桌面iOS
- Windows 8系統下桌面的快捷方式如何去掉小箭頭Windows
- Windows10系統無法新增桌面快捷方式如何解決Windows
- 玩轉Windows桌面圖示 (轉)Windows
- win10系統如何在桌面建立edge瀏覽器快捷方式Win10瀏覽器
- 在桌面上建立螢幕保護程式圖示(轉)
- linux技巧---為各應用建立快捷方式Linux
- 在BCB中輕鬆使用ActiveX控制元件 (轉)控制元件
- 用BCB編寫身份證號識別程式 (轉)
- Linux:ubuntu桌面操作快捷方式LinuxUbuntu
- Linux下新增桌面快捷方式Linux
- Android Launcher研究(四)-----------桌面應用快捷方式的開發!Android
- 在BCB中使用向量實現控制元件陣列 (轉)控制元件陣列
- 用C++ Builder在桌面上畫圖 (轉)C++UI
- 完全控制你的Windows桌面 (轉)Windows
- 用Tweak UI改變你的 Windows 98 桌面設定(轉)UIWindows
- 如何在Mac桌面設定快捷方式?Mac
- win10傳送到桌面快捷方式的方法_win10系統怎麼傳送到桌面快捷方式Win10
- Windows 下的快捷方式研究Windows
- Android桌面新增快捷方式的實現Android
- windows10系統如何在桌面新增檔案歷史記錄列表快捷方式Windows
- 在windows server 2008 64位安裝時提示:無法在windows "開始"選單或桌面上建立項WindowsServer