当前位置:首页 > > 充电吧
[导读] 1.只允许运行程序的一个实例MFC写在InitInstance函数中    HANDLE hMutex = CreateMutex(NULL, TRUE, _T("test")); //创建一个有名

 

1.只允许运行程序的一个实例

MFC写在InitInstance函数中

    HANDLE hMutex = CreateMutex(NULL, TRUE, _T("test"));
//创建一个有名的互斥对象
    if (ERROR_ALREADY_EXISTS == GetLastError())//如果互斥对象创建失败
    {
        CWnd *wnd;
//找到当前允许程序的窗口,第二个程序为窗口名
        if( wnd = CWnd::FindWindow(0, _T("ControlDemo")))
        {
      //恢复窗口
            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("默认打开的文件名"), 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.执行控制台命令和打开程序
有3种方式可以实现。

 1 WinExec("cmd", SW_SHOW);
//执行的程序名称{文件名和参数; 如没指定路径会按以下顺序查找: 程序目录/当前目录/System32/Windows/PATH环境变量},显示方式 
 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,           //要进行操作的文件或路径 
 8   LPCSTR lpParameters, //当lpOperation为“explore”时指定要传递的参数,通常设为NULL 
 9   LPCSTR lpDirectory,    //指定默认目录,通常设为NULL 
10   INT nShowCmd          //文件打开的方式,以通常方式还是最大化或最小化显示,一般为SW_SHOWNORMAL 
11   ) 
12 参数说明:
13   ●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。例如,可以将其设置为应用程序主窗口句柄,即Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindow函数获得)。 
14   ●Operation:用于指定要进行的操作。其中“open”操作表示执行由FileName参数指定的程序,或打开由FileName参数指定的文件或文件夹;“print”操作表示打印由FileName参数指定的文件;“explore”操作表示浏览由FileName参数指定的文件夹。当参数设为nil时,表示执行默认操作“open”。 
15   ●FileName:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。 
16   ●Parameters:若FileName参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为nil或PChar(0)。 
17   ●Directory:用于指定默认目录。 
18   ●ShowCmd:若FileName参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。 
19   若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。

传入的参数既可以是cmd命令,也可以是exe程序

例:

关机: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 静态消息 
//2 在OnInitDialog()函数中加入 
DragAcceptFiles(TRUE);//允许拖放 
//3 WM_DropFILES 的处理函数为 

 1     unsigned int nFiles=DragQueryFile(hDropInfo,0xFFFFFFFF,NULL,0);//取得拖放的文件总数 
 2     for (unsigned int i = 0; i < nFiles; i++)//循环取得文件名 
 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为实际拷贝的字符数 
 7         CString str(psBuffer);
 8         ListBox.AddString(str);//将路径加入ListBox中
 9         delete [] psBuffer; 
10     } 
11     DragFinish(hDropInfo);//结束

 

6.文件查找

 1 void CControlDemoDlg::FindAllFile(const CString &strPath, const CString &strType)
 2 {
 3     CFileFind file;
 4     BOOL bScanFirst = FALSE;//目录是否是第一次扫描
 5     CString strRealPath;//将路径和文件类型进行拼接
 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);//查找当前文件所在文件夹下指定类型的文件
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 }

 

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭