標籤:子彈 api tle 外部程式 filename 圖片查看 opencv 格式 sage
最近順手接了一個小活,任務目標是將一組映像依次顯示出來。環境就是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調用外部程式之圖片查看