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

Posted dvlinker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC++如何通过代码自动弹出Windows系统的一些窗口(附源码)相关的知识,希望对你有一定的参考价值。

       有时软件中检测到一些问题时,需要打开相关的Windows系统的一些窗口,以供用户查看或者去做设置。本文简单地讲述一下如何弹出一些与软件相关的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照片查看器去打开图片:

 打开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、打开设备管理器窗口

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

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

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

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

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

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

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

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

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++如何通过代码自动弹出Windows系统的一些窗口(附源码)的主要内容,如果未能解决你的问题,请参考以下文章

VC++如何实时感知Windows系统进入和退出待机状态(附源码)

VC++ ATL编写的Windows系统服务程序如何运行设置断点调试

Windows8.1如何解决安装VC++2010失败

Visual C++ 用啥代码可以创建自动启动的windows服务呢

vc编程DoModal弹不出对话框

VC 弹出对话框