在對話方塊中,新增了乙個壓縮按鈕,想一鍵將資料直接壓縮到u盤中。
首先要先確定u盤是否插入,這裡系統只有乙個c盤,所以u盤插入的時候自動是d盤了:
handle hfile = createfile("\\\\.\\d:",
generic_read|generic_write,
file_share_read|file_share_write|file_share_delete,
null,
open_existing,
0, null);//檢測u盤
if(hfile==invalid_handle_value)
closehandle(hfile);
其次在u盤中建立乙個資料夾,將資料壓縮到這個資料夾中:
createdirectorya("d:\\dataq",null);//這個不帶黑屏顯示
當dataq資料夾存在時,此函式返回null,不存在時則建立,無論存不存在都能壓縮,所以我也就沒判斷資料夾是否存在。剛開始用的是createfile來檢測資料夾dataq是否存在,可是不對,它只建立了乙個dataq的檔案,而不是資料夾,所以後來就不用了,如下:
handle hfile1 = createfile("\\\\.\\d:\\dataq",
generic_read|generic_write,
file_share_read|file_share_write|file_share_delete,
null,
open_always,
0, null);//檢測u盤
之後要開始壓縮了,我用的是shellexecute語句,感覺這個比較簡單
handle pet=shellexecute(null,"open","d:\\program files\\winrar\\winrar.exe","a -as -r d:\\dataq\\data3.rar","c:\\data3",sw_hide); //sw_show
waitforsingleobject(pet,infinite);
注意:a -as -r 這幾個引數,a好像代表增加目錄,as是同步壓縮,就是當檔案存在時可以替換掉裡面的內容,-r是包括data3裡的子目錄,如果想壓縮後刪除data3裡面的內容,可以在-r後面加上一句-df就行了,要加個空格,即 a -as -r -df,具體命令可以自己查一下。
這是軟體裡的乙個小功能,小弟剛學,如果**不對,請大家多多指教,期間得到了vc驛站和csdn網友的幫助,在此表示十分感謝!
VC 呼叫外部程式
有三種sdk函式可以呼叫,分別是 winexec,shellexecute,createprocess 其中以winexec最為簡單,主要是呼叫windows程式.shellexecute比winexec靈活一些,主要是呼叫dos程式。createprocess最為複雜但是使用最靈活。1.winex...
VC動態呼叫DLL
1.生成dll extern c declspec dllexport char sendmess char buffer,int length 呼叫的時候要先給buffer分配記憶體 new 不然會出10014的錯誤.10014 系統檢測到在乙個呼叫中嘗試使用指標引數時的無效指標位址。2.動態呼叫...
利用vc呼叫dll
一時興起,研究下關於dll的呼叫,算是作為我首次發表文章啦,怎麼說也是我的處子作啊 好吧入正題啦 關於dll的呼叫,查了下資料,有兩種 一 靜態呼叫 二 動態呼叫,下面是分別的呼叫方法 一 靜態呼叫 3 用vc開啟mytest工程,選中工程,然後選擇vc選單下的project settings 二 ...