龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

如何在快速启动栏创建快捷方式

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
#define NO_WIN32_LEAN_AND_MEAN #include #include // 以上三行放在单元文件最开始 //--------------------------------------------------------------------------- strUCt TShortcutCfg { // 构造函数 TShortcutCfg() { nShowCmd = SW_S

  #define NO_WIN32_LEAN_AND_MEAN

  

#include

  

#include

  

// 以上三行放在单元文件最开始

  

//---------------------------------------------------------------------------

  

strUCt TShortcutCfg

  

{

  

// 构造函数

  

TShortcutCfg()

  

{

  

nShowCmd = SW_SHOWNORMAL;

  

wHotKey = 0;

  

nIconIndex = 0;

  

}

  

// 结构成员:

  

AnsiString strShortcutName; //

  

AnsiString strLnkDir; //

  

AnsiString strDestFile; //

  

AnsiString strArguments; //

  

AnsiString strIconFile; //

  

int nIconIndex; //

  

AnsiString strWorkingDir; //

  

AnsiString strDescription; //

  

Word wHotKey; //

  

int nShowCmd; //

  

};

  

//---------------------------------------------------------------------------

  

// 在快速启动栏创建快捷方式

  

bool CreateQuickLaunchShortcut(TShortcutCfg *scConfig)

  

{

  

char szBuf[MAX_PATH];

  

bool bReturn = true;

  

wchar_t wszBuf[MAX_PATH];

  

IShellLink *pShellLink;

  

AnsiString strShortcutFile;

  

  

LP99vEMIDLIST lpItemIdList;

  

SHGetSpecialFolderLocation(0, CSIDL_APPDATA, &lpItemIdList);

  

SHGetPathFromIDList(lpItemIdList, szBuf);

  

if(DirectoryExists(AnsiString(szBuf)))

  

  

{

  

strShortcutFile = AnsiString(szBuf)

  

+ "MicrosoftInternet EXPlorerQuick Launch"

  

+ scConfig->strShortcutName + ".lnk";

  

strShortcutFile.WideChar(wszBuf, MAX_PATH);

  

}

  

else

  

bReturn = false;

  

  

if(bReturn)

  

{

  

bReturn = CoCreateInstance (CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,

  

IID_IShellLink, (void **)&pShellLink) >= 0;

  

  

if(bReturn)

  

{

  

IPersistFile *ppf;

  

bReturn = pShellLink->QueryInterface(IID_IPersistFile, (void **)&ppf) >= 0;

  

if(bReturn)

  

{

  

// 目标文件

  

if(scConfig->strDestFile != EmptyStr)

  

bReturn = pShellLink->SetPath(scConfig->strDestFile.c_str()) >= 0;

  

// 参数

  

if(bReturn && scConfig->strArguments != EmptyStr)

  

bReturn = pShellLink->SetArguments(scConfig->strArguments.c_str()) >= 0;

  

// 显示图标

  

if(bReturn && scConfig->strIconFile !=

  

  

EmptyStr && FileExists(scConfig->strIconFile))

  

pShellLink->SetIconLocation(scConfig->strIconFile.c_str(),

  

scConfig->nIconIndex);

  

// 起始位置

  

if(bReturn && scConfig->strWorkingDir != EmptyStr)

  

pShe

  

精彩图集

赞助商链接