VC++如何通过代码自动弹出Windows系统的一些窗口(附源码)

       有时软件中检测到一些问题时,需要打开相关的Windows系统的一些窗口,以供用户查看或者去做设置。本文简单地讲述一下如何弹出一些与软件相关的Windows系统窗口。

1、弹出“打开方式->选择程序...”对话框

       在一些下载软件中,当目标文件下载完成后,提供“打开文件”和“打开文件所在文件夹”的功能。当用户点击“打开文件”按钮时,就会去使用文件默认的程序去打开该文件。如果系统中没有打开该类型文件的默认程序,则需要自动弹出“打开方式->选择程序...”对话框,让用户去选择使用哪个程序去打开目标文件,如下:

VC++如何通过代码自动弹出Windows系统的一些窗口(附源码)_第1张图片

除了下载软件中有“打开文件”和“打开文件所在文件夹”的功能,在IM软件中,在接受完别人发过来的文件时,也要提供这两个功能。

       我们可以使用如下的代码打开“打开方式->选择程序...”对话框:

// 打开“打开方式->选择程序...”对话框
CString strCmd;
strCmd.Format( _T("shell32, OpenAs_RunDLL  %s"), strFilePath.GetData() );
ShellExecute( NULL, _T("open"), _T("rundll32.exe"), strCmd, NULL, SW_SHOWNORMAL );

2、打开Windows照片查看器

       当我们使用Windows默认程序打不开某个图片时,可以尝试使用Windows照片查看器去打开图片:

VC++如何通过代码自动弹出Windows系统的一些窗口(附源码)_第2张图片

 打开Windows照片查看器的代码如下:

CUIString strCmd;
strCmd.Format( _T("shimgvw.dll imageview_fullscreen %s"), strImagePath );
ShellExecute( NULL, _T("open"), _T("rundll32.exe shimgvw.dll imageview_fullscreen"), 
			strCmd, NULL, SW_SHOWNORMAL );

3、打开设备管理器窗口

       当程序中检测到系统中有设备有问题,或者设备的驱动有问题时,可以弹出系统的设备管理器窗口,供用户查看。设备管理器窗口如下:

VC++如何通过代码自动弹出Windows系统的一些窗口(附源码)_第3张图片

打开设备管理器的代码如下:(通过在命令行窗口cmd.exe中执行命令打开窗口)

WinExec( "cmd.exe /c hdwwiz.cpl",SW_HIDE );

通过调用WinExec去执行,其中SW_HIDE参数,是让cmd.exe命令行窗口不弹出来(掩藏起来)。

4、打开系统扬声器设备窗口

      当程序中检测到扬声器设备异常时,可以弹出系统扬声器设备窗口以供用户查看,如下:

VC++如何通过代码自动弹出Windows系统的一些窗口(附源码)_第4张图片

打开上述窗口的代码如下:(通过在命令行窗口cmd.exe中执行命令打开窗口)

WinExec( "cmd.exe /c rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0",SW_HIDE );

5、打开系统麦克风设备窗口

      当程序中检测到麦克风设备异常时,可以弹出系统麦克风设备窗口以供用户查看,如下:

VC++如何通过代码自动弹出Windows系统的一些窗口(附源码)_第5张图片

 打开上述窗口的代码如下:(通过在命令行窗口cmd.exe中执行命令打开窗口)

WinExec( "cmd.exe /c rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1",SW_HIDE );

其实,麦克风设备列表和扬声器设备列表是在同一个窗口的不同tab页下面的,对应的命令中差异仅仅是0和1的索引值,如果要打开后面两个tab页,使用2和3索引值即可。

你可能感兴趣的:(VC++常用功能代码封装,选择程序窗口,照片查看器,设备管理器窗口,麦克风设备列表,扬声器设备列表)