當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀]?1.只允許運(yùn)行程序的一個(gè)實(shí)例MFC寫在InitInstance函數(shù)中????HANDLE?hMutex?=?CreateMutex(NULL,?TRUE,?_T("test")); //創(chuàng)建一個(gè)有名

?

1.只允許運(yùn)行程序的一個(gè)實(shí)例

MFC寫在InitInstance函數(shù)中

????HANDLE?hMutex?=?CreateMutex(NULL,?TRUE,?_T("test"));
//創(chuàng)建一個(gè)有名的互斥對象
????if?(ERROR_ALREADY_EXISTS?==?GetLastError())//如果互斥對象創(chuàng)建失敗
????{
????????CWnd?*wnd;
//找到當(dāng)前允許程序的窗口,第二個(gè)程序?yàn)榇翱诿?????????if(?wnd?=?CWnd::FindWindow(0,?_T("ControlDemo")))
????????{
      //恢復(fù)窗口
????????????wnd->ShowWindow(SW_RESTORE);
      //最前端顯示
????????????wnd->SetForegroundWindow();
????????}
????????return?FALSE;
????}


2.打開保存文件

1?????LPCTSTR?pFileType?=_T("音樂/電影文件(mp3,wav,avi,asf)|*.mp3;*.wav;*.avi;*.asf|mp3?文件(*.mp3)|*.mp3|音頻文件?(*.wav)|*.wav|視頻文件?(*.avi)|*.avi|Window?Media?文件(*.asf)|*.asf|所有文件?(*.*)|*.*||");
2?????CFileDialog?dlg(FALSE,?_T("打開MP3文件"),?_T("默認(rèn)打開的文件名"),?OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR,?pFileType);?
3?????if(dlg.DoModal()==IDOK)?
4?????{?
5?????????CString?m_filename=dlg.GetPathName();?
6?????????
7?????}

3.打開目錄

?1?????TCHAR?szPath[MAX_PATH];?????//存放選擇的目錄路徑?
?2?????CString?str;
?3?
?4?????ZeroMemory(szPath,?sizeof(szPath));???
?5?
?6?????BROWSEINFO?bi;???
?7?????bi.hwndOwner?=?m_hWnd;???
?8?????bi.pidlRoot?=?NULL;???
?9?????bi.pszDisplayName?=?szPath;???
10?????bi.lpszTitle?=?L"請選擇需要打開的目錄:";???
11?????bi.ulFlags?=?0;???
12?????bi.lpfn?=?NULL;???
13?????bi.lParam?=?0;???
14?????bi.iImage?=?0;???
15?????//彈出選擇目錄對話框
16?????LPITEMIDLIST?lp?=?SHBrowseForFolder(&bi);???
17?
18?????if(lp?&&?SHGetPathFromIDList(lp,?szPath))???
19?????{
20?????????str.Format(_T("選擇的目錄為?%s"),??szPath);
21?????????AfxMessageBox(str);?
22?????}
23?????else???
24?????????AfxMessageBox(_T("無效的目錄,請重新選擇"));


4.執(zhí)行控制臺命令和打開程序
有3種方式可以實(shí)現(xiàn)。

?1?WinExec("cmd",?SW_SHOW);
//執(zhí)行的程序名稱{文件名和參數(shù);?如沒指定路徑會按以下順序查找:?程序目錄/當(dāng)前目錄/System32/Windows/PATH環(huán)境變量},顯示方式?
?2?system("cmd");
?3?ShellExecute(NULL,?_T("open"),_T("cmd"),NULL,NULL,?SW_SHOWNORMAL);?
?4? /*
?5?ShellExecute(?  HWND?hwnd,???????????//父窗口句柄?(如:NULL,Handle等)
?6?  LPCSTR?lpOperation,?//操作類型?(如:"open")*要加英文雙引號
?7?  LPCSTR?lpFile,???????????//要進(jìn)行操作的文件或路徑?
?8?  LPCSTR?lpParameters,?//當(dāng)lpOperation為“explore”時(shí)指定要傳遞的參數(shù),通常設(shè)為NULL?
?9?  LPCSTR?lpDirectory,????//指定默認(rèn)目錄,通常設(shè)為NULL?
10?  INT?nShowCmd??????????//文件打開的方式,以通常方式還是最大化或最小化顯示,一般為SW_SHOWNORMAL?
11?  )?
12?參數(shù)說明:
13?  ●hWnd:用于指定父窗口句柄。當(dāng)函數(shù)調(diào)用過程出現(xiàn)錯(cuò)誤時(shí),它將作為Windows消息窗口的父窗口。例如,可以將其設(shè)置為應(yīng)用程序主窗口句柄,即Application.Handle,也可以將其設(shè)置為桌面窗口句柄(用GetDesktopWindow函數(shù)獲得)。?
14?  ●Operation:用于指定要進(jìn)行的操作。其中“open”操作表示執(zhí)行由FileName參數(shù)指定的程序,或打開由FileName參數(shù)指定的文件或文件夾;“print”操作表示打印由FileName參數(shù)指定的文件;“explore”操作表示瀏覽由FileName參數(shù)指定的文件夾。當(dāng)參數(shù)設(shè)為nil時(shí),表示執(zhí)行默認(rèn)操作“open”。?
15?  ●FileName:用于指定要打開的文件名、要執(zhí)行的程序文件名或要瀏覽的文件夾名。?
16?  ●Parameters:若FileName參數(shù)是一個(gè)可執(zhí)行程序,則此參數(shù)指定命令行參數(shù),否則此參數(shù)應(yīng)為nil或PChar(0)。?
17?  ●Directory:用于指定默認(rèn)目錄。?
18?  ●ShowCmd:若FileName參數(shù)是一個(gè)可執(zhí)行程序,則此參數(shù)指定程序窗口的初始顯示方式,否則此參數(shù)應(yīng)設(shè)置為0。?
19?  若ShellExecute函數(shù)調(diào)用成功,則返回值為被執(zhí)行程序的實(shí)例句柄。若返回值小于32,則表示出現(xiàn)錯(cuò)誤。

傳入的參數(shù)既可以是cmd命令,也可以是exe程序

例:

關(guān)機(jī):system("shutdown -s -t 0");

打開磁盤: system("explorer.exe D:\")

?PROCESS_INFORMATION pi;
?STARTUPINFO si;
?memset(&si,0,sizeof(si));
?si.cb=sizeof(si);
?si.wShowWindow=SW_SHOW;
?si.dwFlags=STARTF_USESHOWWINDOW;
?bool fRet=CreateProcess(L"C:\Test.exe",NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi);

5.文件拖動

//1 添加 WM_DropFILES 靜態(tài)消息?
//2 在OnInitDialog()函數(shù)中加入?
DragAcceptFiles(TRUE);//允許拖放?
//3 WM_DropFILES 的處理函數(shù)為?

?1?????unsigned?int?nFiles=DragQueryFile(hDropInfo,0xFFFFFFFF,NULL,0);//取得拖放的文件總數(shù)?
?2?????for?(unsigned?int?i?=?0;?i?<?nFiles;?i++)//循環(huán)取得文件名?
?3?????{?
?4?????????unsigned?int?nLen?=?DragQueryFile(hDropInfo,?i,?NULL,?0)+1;//取得文件名長度?
?5?????????char?*psBuffer?=?new?char[nLen];?
?6?????????unsigned?int?sLen?=?DragQueryFileA(hDropInfo,?i,?psBuffer,?nLen);//取得文件名到psBuffer中,sLen為實(shí)際拷貝的字符數(shù)?
?7?????????CString?str(psBuffer);
?8?????????ListBox.AddString(str);//將路徑加入ListBox中
?9?????????delete?[]?psBuffer;?
10?????}?
11?????DragFinish(hDropInfo);//結(jié)束

?

6.文件查找

?1?void?CControlDemoDlg::FindAllFile(const?CString?&strPath,?const?CString?&strType)
?2?{
?3?????CFileFind?file;
?4?????BOOL?bScanFirst?=?FALSE;//目錄是否是第一次掃描
?5?????CString?strRealPath;//將路徑和文件類型進(jìn)行拼接
?6?????strRealPath.Format(_T("%s\*.*"),strPath);
?7?????bool?bFind?=?file.FindFile(strRealPath);
?8?????while(bFind)
?9?????{????
10?????????bFind?=?file.FindNextFile();
11?????????CString?strTemp?=?file.GetFilePath();
12?????????if?(!file.IsDots()?&&?!file.IsDirectory())//如果不是目錄
13?????????{
14?????????????if?(!bScanFirst)
15?????????????{
16?????????????????FindTypeFile(strPath,?strType);//查找當(dāng)前文件所在文件夾下指定類型的文件
17?????????????????bScanFirst?=?TRUE;
18?????????????}
19?????????}
20?????????else?if?(!file.IsDots()?&&?file.IsDirectory())//如果是目錄,排除.和..兩種類型的目錄
21?????????{
22?????????????FindAllFile(strTemp,?strType);())//遞歸目錄
23?????????}
24?????}
25?}
26?
27?void?CControlDemoDlg::FindTypeFile(const?CString?&strPath,?const?CString?&strType)
28?{
29?????CFileFind?file;
30?????CString?strRealPath;
31?????strRealPath.Format(_T("%s\%s"),strPath,strType);
32?????bool?bFind?=?file.FindFile(strRealPath);
33?????while(bFind)
34?????{????
35?????????bFind?=?file.FindNextFile();
36?????????CString?strTemp?=?file.GetFilePath();
37?????????if?(!file.IsDots()?&&?!file.IsDirectory())//如果是指定格式的文件則加入列表框
38?????????{
39?????????????ListBox.AddString(strTemp);//添加到ListBox
40?????????}
41?????}
42?}

?

?

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉