Windows API调用外部程序之图片查看

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows API调用外部程序之图片查看相关的知识,希望对你有一定的参考价值。

最近顺手接了一个小活,任务目标是将一组图像依次显示出来。环境就是XP中,代码嵌入到一个MFC工程里,图片是未经处理的可能是JPEG2000格式的j2c,也可能是bitmap。当然还可能没有任何的文件头,这个最后看实际情况再添加吧。

主要就是调用外部程序(j2c可以用网上的ivanview或kakadu,bmp就用Windows的图片查看工具),打开/关闭这两个功能。文件便利可以用CFileFind类,这里用的FindFirstFile和FindNextFile。

打开可以使用system(),还可以用ShellExecuteA();关闭的话可以向窗口发送一个关闭的消息,需要事先获得窗口的句柄,也可以用system("taskkill")。思路就是这样,下面是代码。

 1     HWND hDisplay;
 2     HANDLE finder;
 3     WIN32_FIND_DATA findFileData;    
 4     BOOL isOK=TRUE;
 5     CString path("C:\\vs_p\\testopencv\\testopencv\\Debug\\");
 6     CString title(" - Windows 图片和传真查看器");
 7     finder=FindFirstFile(path+_T("*.bmp"),&findFileData);
 8     while((finder!=NULL) && (isOK))
 9     {
10         ShellExecute(NULL,L"open",(path+findFileData.cFileName),NULL,NULL, SW_SHOWNORMAL);    //打开文件
11         Sleep(5000);                                                                        //让子弹飞一会            
12         CString fulltitle=findFileData.cFileName+title;
13         hDisplay=::FindWindow(NULL,fulltitle);
14         ::PostMessage(hDisplay ,WM_CLOSE,0,0);                                                //发送关闭窗口的消息
15         isOK=FindNextFile(finder,&findFileData);
16     }
17     //system("C:\\vs_p\\testopencv\\testopencv\\Debug\\a.bmp");//通过默认应用打开某文件
18     //system("\"C:\\Program Files\\IvanView\\ivanview.exe\" C:\\1336.pdf.asan.47.376.jp2");//通过指定应用打开某文件

我的工作不是程序员,写这几行代码就是个兴趣爱好,留个记录。

以上是关于Windows API调用外部程序之图片查看的主要内容,如果未能解决你的问题,请参考以下文章

C# 下winform代码调用windows自带的图片查看器查看本地图片可以,请问下查看远程图片怎么写,求代码

Windows API 编程----将错误代码转换成错误描述信息

从控制器调用外部 API 函数,LARAVEL 4

uniapp怎么实现选择和上传图片分开

使用外部 API 调用和 findOneAndUpdate 循环结果

MySQL之存储过程实例讲解(创建调用查看修改删除)