GuiThumbnail.cpp 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #include "GuiThumbnail.h"
  2. #include <string.h>
  3. #include <wchar.h>
  4. #include <thread>
  5. #include <vector>
  6. #include <algorithm>
  7. #include <mutex>
  8. std::mutex mtx;
  9. void processResult(int i)
  10. {
  11. wchar_t src_filename[MAX_PATH] = {0};
  12. wchar_t thumb_filename[MAX_PATH] = {0};
  13. Everything_GetResultFullPathNameW(i, src_filename, MAX_PATH);
  14. // AI EPS INDD 文件导出缩略图
  15. wcscpy(thumb_filename, Everything_GetResultFileName(i));
  16. wcscat(thumb_filename, L"_T.jpg");
  17. bool ret = AdobeThumbnail_W(src_filename, thumb_filename);
  18. if (!ret) { // CorelDRAW CDR 文件导出缩略图
  19. wcscpy(thumb_filename, Everything_GetResultFileName(i));
  20. wcscat(thumb_filename, L"_T.png");
  21. ret = CorelThumbnail_W(src_filename, thumb_filename);
  22. }
  23. std::lock_guard<std::mutex> lock(mtx);
  24. // 在这里可以对处理结果进行进一步的处理或记录
  25. }
  26. // 执行提取缩略图 主功能
  27. bool GuiThumbnail(const wchar_t *keyWord, const wchar_t *savePath)
  28. {
  29. // wchar_t src_filename[MAX_PATH] = {0};
  30. // wchar_t thumb_filename[MAX_PATH] = {0};
  31. wchar_t wbuf[MAX_PATH] = {0};
  32. Everything_SetSearch(keyWord);
  33. bool EQRet = Everything_Query(TRUE);
  34. if (EQRet == false) {
  35. return false;
  36. }
  37. // 如果没有目录建立,进入目录
  38. _wmkdir(savePath);
  39. _wchdir(savePath);
  40. // // 文件导出缩略图 改成多线程
  41. // for (int i = 0 ; i < Everything_GetNumResults(); i++) {
  42. //
  43. // Everything_GetResultFullPathNameW(i, src_filename , MAX_PATH);
  44. //
  45. // // AI EPS INDD 文件导出缩略图
  46. // wcscpy(thumb_filename, Everything_GetResultFileName(i));
  47. // wcscat(thumb_filename, L"_T.jpg");
  48. // bool ret = AdobeThumbnail_W(src_filename , thumb_filename);
  49. //
  50. // if (!ret) { // CorelDRAW CDR 文件导出缩略图
  51. // wcscpy(thumb_filename, Everything_GetResultFileName(i));
  52. // wcscat(thumb_filename, L"_T.png");
  53. // ret = CorelThumbnail_W(src_filename, thumb_filename);
  54. // }
  55. // }
  56. int numResults = Everything_GetNumResults();
  57. std::vector<std::thread> threads;
  58. for (int i = 0; i < numResults; i++) {
  59. threads.emplace_back(std::thread(processResult, i));
  60. }
  61. // 等待所有线程执行完毕
  62. std::for_each(threads.begin(), threads.end(), [](std::thread& t) {
  63. t.join();
  64. });
  65. return true;
  66. }
  67. // 临时PNG显示文件
  68. bool Thumbnail_TempPng(const wchar_t *src_filename, const wchar_t *tmppng)
  69. {
  70. bool ret = AdobeThumbnail_W(src_filename, tmppng);
  71. if (!ret) {
  72. ret = CorelThumbnail_W(src_filename, tmppng);
  73. }
  74. return ret;
  75. }