VC创建快捷方式
?
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接口示例代碼:
?
// // 在桌面上創建快捷方式 #include <shlobj.h> #include <atlbase.h> int main() { 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://"); //確??旖莘绞铰窂接葾NSI字符串組成 LPCSTR lpstr; lpstr = "C://Documents and Settings//hjs//桌面[url=file:vc]//vc[/url]創建的快捷方式.lnk"; MultiByteToWideChar( CP_ACP, 0,lpstr, -1, wsz, MAX_PATH); //保存快捷方式 ppf->Save(wsz,TRUE); } } //釋放IPersistFile接口 ppf->Release(); //釋放IShellLink對象 pLink->Release(); //釋放COM接口 ::CoUninitialize(); return 0; } 本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/wangningyu/archive/2009/08/08/4426273.aspx?
?
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/wangningyu/archive/2009/08/08/4426273.aspx
?
?
總結
- 上一篇: XSuperTooltip - Offi
- 下一篇: 用VC进行COM编程所必须掌握的理论知识