国产高清在线免费观看-国产高清在线免费无码-国产高清在线男人的天堂-国产高清在线视频-国产高清在线视频精品视频-国产高清在线视频伊甸园

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

Windows Api如何創建一個快捷方式并且在開始菜單搜索到自己的應用

admin
2025年3月30日 19:21 本文熱度 364

當我們點擊win10系統搜索框的時候,輸入名稱 ,win10會幫助我們匹配到對應的應用。這里搜索框實際上就是windows系統的開始菜單。

接下來我們隨便找一個應用,右鍵,然后點擊 打開文件位置,我們來看下這個EveryThing的具體位置。

我們會看到搜索框中看到的EveryThing是一個快捷方式,統一存放在系統的開始菜單目錄下,

windows系統的開始菜單有兩個:一個是全局的開始菜單,位于C:\ProgramData\Microsoft\Windows\Start Menu\Programs 目錄下。

另一個是針對每個用戶有一個單獨的開始菜單,位于C:\Users\用戶名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs 目錄下。

如果想在搜索框中看到我們自己的應用,可以直接我們自己exe應用的快捷方式復制到系統的開始菜單目錄下,就可以在搜索框中搜索到我們自己的應用了。

但是通過手動方式將快捷方式復制到系統開始菜單目錄下,只是普通用戶的做法,今天這篇文章,我們通過win32 api來演示一下如何創建一個快捷方式。

以下代碼基本是從MSDN是復制過來并且做了一部分修改,具體可以參考MSDN的地址:https://learn.microsoft.com/en-us/windows/win32/shell/links

#include <iostream>
#include "windows.h"
#include "winnls.h"
#include "shobjidl.h"
#include "objbase.h"
#include "objidl.h"
#include "shlguid.h"
#include "ShlObj.h"
HRESULT CreateLink(LPCWSTR lpszPathObj, LPCWSTR lpszPathLink, LPCWSTR lpszDesc)
{
CoInitialize(NULL);
 HRESULT hres;
 IShellLink* psl;

 hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl);
if (SUCCEEDED(hres))
 {
 IPersistFile* ppf;

 psl->SetPath(lpszPathObj);
 psl->SetDescription(lpszDesc);

 hres = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf);

if (SUCCEEDED(hres))
 {
 hres = ppf->Save(lpszPathLink, TRUE);
 ppf->Release();
 }
 psl->Release();
 }
CoUninitialize();
return hres;
}

windows api創建快捷方式是通過COM組件的方式創建的,上述代碼聲明了一個C++函數CreateLink,函數中有幾個比較重要的Windows Api依次和大家說明一下。

1、CoInitialize(NULL); 初始化COM組件,這是調用COM組件必須要執行的函數。

2、CoCreateInstance 實例化一個具體的COM組件,參數CLSID_ShellLink可以理解為要實例化的COM組件的唯一Id。

3、QueryInterface 獲取到COM組件的接口,這個接口由COM組件提供,不同的COM組件接口不同,但都是調用QueryInterface函數統一獲取到COM組件接口,接口以指針的形式返回,上述代碼中返回的接口為IPersistFile* ppf。

4、ppf->Save調用COM組件提供的函數,在本示例中,Save函數指的是在指定位置創建一個快捷方式。

5、ppf->Release()COM組件計數器減1,這個是COM組件調用必須的操作。

6、CoUninitialize() 釋放COM組件,和第一個函數CoInitialize(NULL);必須同時出現。

有了上面這個創建快捷方式的函數,我們來調用一下這個函數。如下代碼是為d:\7z2404-x64.exe這個應用程序創建一個快捷方式。SHGetKnownFolderPath函數是win32的一個標準函數,用于獲取windows系統中各種系統默認的路徑,SHGetKnownFolderPath的第一個參數是個枚舉,表示我們要獲取的目錄類型,也就是你想獲取什么目錄,是系統的桌面路徑、下載路徑、圖片路徑還是什么路徑。具體看一參考MSDN的說明:https://learn.microsoft.com/zh-cn/windows/win32/shell/knownfolderid

如下代碼中傳入的參數FOLDERID_Desktop表示桌面,也就是說我們會把快捷方式創建在桌面。FOLDERID_CommonPrograms表示系統的開始菜單目錄。

int main()
{
 LPCWSTR lpszPathObj = L"d:\\7z2404-x64.exe";//源路徑
//設置快捷方式路徑
 PWSTR path = NULL;
SHGetKnownFolderPath(FOLDERID_Desktop, 0NULL, &path);
std::wstring lnkPath(path);
 lnkPath.append(L"\\7z2404-x64.lnk");

CreateLink(lpszPathObj, lnkPath.c_str(), L"desc");
}


閱讀原文:原文鏈接


該文章在 2025/3/31 11:18:39 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产日本亚洲欧美 | 永久免费观看影视剧的电视软件 | 金梅瓶免费完整 | 亚洲成av人片在线观看亚洲成a人片在线观看天堂无码 亚洲成av人片在线观看无线 | 四虎影视久久久免费 | 亚洲午夜久久久久久尤物 | 中国老妇xxxx性开放 | 亚洲国产理论 | 久久婷婷激情综合色综合俺也去 | 亚洲a∨无码天堂在线观看 亚洲a∨无码天堂网 | 国产成人精品无码a区在线观看 | 国产真实迷奷系列在线看视频 | 久久久精品人妻一区二区三区 | 亚洲妇女在现代城市街道上使用手机正版高清视频素材下载 | 在线一区视频 | 无码专区人妻系列在线 | 汤姆无码一区二区三区视频 | 一二三四免费中文字幕 | 熟妇app欧美精品少妇一区二区三区 | 亚洲欧美日韩专区第一页 | 亚洲美腿欧美偷拍 | 亚洲精品岛国片在线观看 | 久久精品亚洲中文字幕无码网站 | 永久免费看黄A片无码软件 永久免费看免费无码视频 永久免费无码AV国产网站 | 亚洲精品中文字幕在线 | 欧美巨鞭大战丰满少妇 | 7799综合网日日夜夜视频 | 欧美激情精品久久999 | 韩国伦理片免费在线观看电影在线观看 | 无码av在专区在线观看 | 亚洲偷自拍另类在线观看 | 日韩中文字幕在线免费观看 | 久久精品一区二区免费播放 | 无码中文字幕久久久一区二区 | 蜜桃av精品一区二区三区 | 国产播放隔着超薄丝袜进入 | 真人作爱视频免费视频大全 | 少妇精品一区二区三区 | 97人妻人人澡人人爽国产 | 亚洲av永久综合在线观看尤物 | 成年女人毛片免费视频 |