簡介:
可以使用 shellexecuteex 開啟檔案或執行程式。
語法格式:
bool shellexecuteex(_inout_ shellexecuteinfo *pexecinfo
);
引數:輸入輸出引數都是 shellexecuteinfo 結構體,其結構定義如下:
1 typedef struct_shellexecuteinfo
2 dummyunionname;
2223 handle hprocess;//
指向新啟動的程式的控制代碼。若fmask不設為see_mask_nocloseprocess則該項值為null。
24//
但若程式沒有啟動,即使fmask設為see_mask_nocloseprocess,該值也仍為null。
25//
如果沒有新建立程序,也會為空
2627 } shellexecuteinfo, *lpshellexecuteinfo;
函式執行成功,返回 true ,否則返回 false ,可使用 getlasterror 獲取錯誤碼。
● error_file_not_found 檔案不存在
● error_path_not_found 路徑不存在
● error_dde_fail dde(動態資料交換)失敗
● error_no_association 未找到與指定檔案拓展名關聯的應用
● error_access_denied 拒絕訪問
● error_dll_not_found 未找到dll
● error_cancelled 功能提示使用者提供額外資訊,但是使用者取消請求。
● error_not_enough_memory 記憶體不足
● error_sharing_violation 發生共享衝突
例項:
1shellexecuteinfo sei;
2 zeromemory(&sei, sizeof(shellexecuteinfo));//
使用前最好清空
3 sei.cbsize = sizeof(shellexecuteinfo);//
管理員許可權執行cmd,最基本的使用與 shellexecute 類似
4 sei.lpfile = _t("
cmd.exe");
5 sei.nshow =sw_show;
6 sei.lpverb = _t("
runas");
7 shellexecuteex(&sei);
89 zeromemory(&sei, sizeof
(shellexecuteinfo));
10 sei.cbsize = sizeof
(shellexecuteinfo);
11 sei.lpfile = _t("
cmd.exe");
12 sei.nshow =sw_show;
13 sei.fmask = see_mask_nocloseprocess;//
使用 see_mask_nocloseprocess 引數
14 sei.lpverb = _t("
open");
15if (shellexecuteex(&sei))//
執行成功
1620
else
21
其他諸如開啟檔案、開啟網頁等與 shellexecute 類似。
ShellExecuteEx提公升子程序許可權
首先說下shellexecuteex是如何提公升許可權的,shellexecuteex函式只有乙個引數,就是shellexecuteinfo結構體,不過是指標型別的,這無所謂,關鍵是這個結構體中有乙個引數lpverb,它的作用就是指定如何操作檔案lpfile,提公升許可權就是設定lpverb為 ru...
ShellExecuteEx呼叫第三方程式
呼叫第三方程式有很多方法,包括system winexec createprocess,shellexecute,shellexecuteex。對比這幾個啟動程序的函式,總結下來功能完善而且好用的就是 shellexecuteex函式了。這個函式不僅可以傳入引數到第三方而且能夠傳回程序控制代碼用於操...
WaitForSingleObject函式的使用
程式舉例 1 建立對話方塊應用程式,專案名稱為mytestthread 2 新增按鈕,命名為啟動和停止,在對話方塊中增加編輯框,id為idc time,3 增加成員變數,handle m hthread 2 此為執行緒的控制代碼 4 定義全域性變數,用來控制線程的執行與否 volatile bool...