VC操作Windows捷徑

來源:互聯網
上載者:User
VC操作Windows捷徑(自己總結)二個操作:建立和解析主要用到的是COM組件。IShellLink和IPersistFile需要添加的頭函數
shobjidl.hIPersistFile主要用到兩個成員函數:
1、Save。儲存內容到檔案中去
2、Load。讀取
 Load的函數原型
 HRESULT Load(
   LPCOLSTR pszFileName, //捷徑的檔案名稱,應該是ANSI字元
   DWORD dwMode //讀取方式
  );
 dwMode可取如下值:
 STGM_READ:唯讀
       STGM_WRITE:唯寫
       STGM_READWRITE:讀寫IShellLink主要成員:
1、GetArguments:獲得參數資訊
2、GetDescription:獲得描述資訊(備忘行)
3、GetHotkey:獲得快速鍵
4、GetIconLocation:獲得表徵圖 
5、GetIDList:獲得捷徑的目標對象的item identifier list (Windows外殼中的每個對象如檔案,目錄和印表機等都有唯一的item identifiler list)
6、GetPath: 獲得捷徑的目標檔案或目錄的全路徑
7、GetShowCmd:獲得捷徑的運行方式,比如常規視窗,最大化
8、GetWorkingDirectory:獲得工作目錄
9、Resolve:按照一定的搜尋規則試圖獲得目標對象,即使目標對象已經被刪除或移動,重新命名
 下面是對應資訊的設定方法
10、SetArguments
11、SetDescription
12、SetHotkey
13、SetIconLocation
14、SetIDList
15、SetPath
16、SetRelativePat
17、SetShowCmd
18、SetWorkingDirectory 一般情況操作如下:一、初始化COM介面
二、建立IShellLink對象
三、從IShellLink對象中擷取IPersistFile對象介面
四、操作IShellLink對象
五、釋放IPersistFile對象介面
六、釋放IShellLink對象
七、釋放COM介面範例程式碼:
/*
註:在案頭上建立捷徑,捷徑的名稱為"VC建立的捷徑",捷徑指嚮應用程式"c:/aa.exe"
捷徑的快速鍵:無
捷徑的工作目錄:c:/
捷徑的備忘:VC寫寫捷方式
捷徑的運行方式:常規視窗
*/HRESULT hRet;
IShellLink *pLink;  //IShellLink對象指標
IPersistFile * ppf; //IPersisFil對象指標
WCHAR wsz[MAX_PATH];  //定義Unicode字串//初始化COM庫
hRet = ::CoInitialize(NULL);
if ( hRet != S_OK)  //初始化COM庫失敗,直接返回
{
   AfxMessageBox("初始化COM庫失敗");
   return;
}
//建立IShellLink執行個體
hRet = ::CoCreateInstance(CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER,IID_IShellLink,(void**)&pLink);
if ( hRet != S_ok)
{
 AfxMessageBox("建立IShellLink執行個體失敗");
}
else
{
 //建立IShellLink執行個體成功,繼續操作
 
 //從IShellLink對象中擷取IPersistFile介面
 hRet = pLink->QueryInterface(IID_IpersistFile,(void**)&ppf);
 if ( hRet != S_OK)
 {
  AfxMessageBox("擷取IPersistFile介面失敗");
 }
 else
 {
  //擷取介面成功,繼續操作
  //設定捷徑中的程式路徑
  pLink->SetPath("c://aa.exe");
  //設定捷徑的工作目錄
  pLink->SetWorkingDirectory("c://");
  //確保捷徑路徑由ANSI字串組成
  MultiByteToWideChar(
   CP_ACP,
   0,
   "C://Documents and Settings//hjs//案頭//vc建立的捷徑.lnk",
   -1,
   wsz,
   MAX_PATH
  );
  //儲存捷徑
  ppf->Save(wsz,TRUE);
 }
}//釋放IPersistFile介面
ppf->Release();
//釋放IShellLink對象
pLink->Release();
//釋放COM介面
::CoUninitialize();
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.