八月 8th, 2008Convert FlV to DPG

  1. Install ffdshow
  2. Install flvsplitter
  3. Install Flash Video decoders
  4. Download dpgtools.
  5. Extract the dpgtools131.zip. Run dpgenc.exe, drag the flv file into it.

Reference : FLVをDPGに変換する方法

MRU Cleaner

null

use 'SHFileOperation', which copies, removes, renames or deletes a file system object

C++:
  1. #include <tchar.h>
  2. #include <shellapi.h>
  3.  
  4. bool DeleteDirectory(LPCTSTR lpszDir, bool noRecycleBin = true)
  5. {
  6.   int len = _tcslen(lpszDir);
  7.   TCHAR *pszFrom = new TCHAR[len+2];
  8.   _tcscpy(pszFrom, lpszDir);
  9.   pszFrom[len] = 0;
  10.   pszFrom[len+1] = 0;
  11.  
  12.   SHFILEOPSTRUCT fileop;
  13.   fileop.hwnd   = NULL;    // no status display
  14.   fileop.wFunc  = FO_DELETE;  // delete operation
  15.   fileop.pFrom  = pszFrom;  // source file name as double null terminated string
  16.   fileop.pTo    = NULL;    // no destination needed
  17.   fileop.fFlags = FOF_NOCONFIRMATION|FOF_SILENT;  // do not prompt the user
  18.  
  19.   if(!noRecycleBin)
  20.     fileop.fFlags |= FOF_ALLOWUNDO;
  21.  
  22.   fileop.fAnyOperationsAborted = FALSE;
  23.   fileop.lpszProgressTitle     = NULL;
  24.   fileop.hNameMappings         = NULL;
  25.  
  26.   int ret = SHFileOperation(&fileop);
  27.   delete [] pszFrom; 
  28.   return (ret == 0);
  29. }
  30.  
  31. int main()
  32. {
  33.   DeleteDirectory("d:\\Test", false);
  34.   return 0;
  35. }


reference : How to delete a directory and subdirectories?

在 winxp 遇到一個檔案大小為 0,沒有副檔名的檔案,用del 指令砍不掉,用 unlocker 程式也顯示沒被其它程式佔用。解決的方法就到dos下,執行 dir/x 指令查看此檔案的短檔名,再執行「 del 短檔名」 即可刪除。

六月 10th, 2008SendMessage to Control WMP

先用 spy 得到 wmp 的 windows class 及 caption,並只觀察「WM_COMMAND」message,可發現當 pause、stop、resume 時,wParam 參數 會隨之變化。

C++:
  1. #include <windows.h>
  2.  
  3. void main(int argc, char** argv)
  4. {
  5.     if (argc> 1)
  6.     {
  7.         int n = atoi(argv[1]);
  8.         HWND wmp = FindWindow("WMPlayerApp", "Windows Media Player");
  9.  
  10.         switch(n)
  11.         {
  12.             case 0: //pause,play
  13.             SendMessage(wmp, WM_COMMAND, 18808, 0);
  14.             break;
  15.            
  16.             case 1: //stop
  17.             SendMessage(wmp, WM_COMMAND, 18809, 0);
  18.             break;
  19.            
  20.             case 2: //next
  21.             SendMessage(wmp, WM_COMMAND, 18811, 0);
  22.             break;
  23.            
  24.             case 3: //prev
  25.             SendMessage(wmp, WM_COMMAND, 18810, 0);
  26.             break;
  27.  
  28.             case 4: //random
  29.             SendMessage(wmp, WM_COMMAND, 18842, 0);
  30.             break;
  31.            
  32.            
  33.         }
  34.        
  35.     }
  36. }


若有一數列為

CODE:
  1. 1.0,
  2.   0.0,
  3.   0.0,
  4.   4.2,
  5.   3.1,
  6.   4.8,
  7.   0.0,
  8.   7.1,
  9.   0.0,
  10.   1.0,
  11.   2.0,
  12.   0.0,
  13.   0.0,
  14.   1.5,
  15.   0.0,
  16.   1,1


欲尋找此數列 不為零的群組,並計算此群組的平均
例如

CODE:
  1. 1  1.0,    avg = 1.0 
  2.     0.0
  3.     0.0
  4. 2  4.2
  5. 2  3.1,    avg = (4.2+3.1+4.8)/3 
  6. 2  4.8
  7.     0.0
  8. 3  7.1,    avg = 7.1 
  9.     0.0
  10. 4  1.0,    avg = (1.0 + 2.0) /2 
  11. 4  2.0
  12.     0.0
  13.     0.0
  14. 5  1.5,    avg = 1.5 
  15.     0.0
  16. 6  1,1     avg = 1.1


C++:
  1. #include <stdio.h>
  2.  
  3. void main()
  4. {
  5.     int i = 0, preFlag = 0, curFlag = 0;
  6.     float fsum = 0.0f;
  7.     int n = 0, nReg = 0;
  8.     float af[16] = {
  9.         1.0,
  10.         0.0,
  11.         0.0,
  12.         4.2,
  13.         3.1,
  14.         4.8,
  15.         0.0,
  16.         7.1,
  17.         0.0,
  18.         1.0,
  19.         2.0,
  20.         0.0,
  21.         0.0,
  22.         1.5,
  23.         0.0,
  24.         1.1
  25.     };
  26.    
  27.     for (i = 0 ; i <16; i++)
  28.     {
  29.         curFlag = (af[i] == 0.0 ? 0 : 1);
  30.         if (preFlag == 0 && curFlag == 1)
  31.         {   
  32.             nReg++;
  33.         }
  34.        
  35.         if (curFlag == 1)
  36.         {
  37.             fsum += af[i];
  38.             n++;
  39.             printf("reg %d : %.2f\n", nReg, af[i]);
  40.         }
  41.  
  42.         if (preFlag == 1 && curFlag == 0 || (curFlag == 1 && (i == 15)))
  43.         {
  44.             printf("avg:%.2f\n", fsum/n);
  45.             fsum = 0;
  46.             n = 0;
  47.         }
  48.        
  49.         preFlag = curFlag; 
  50.     }
  51.  
  52.    
  53.     printf("Total Regions:%d\n", nReg);
  54. }


輸出

CODE:
  1. reg 1 : 1.00
  2. avg:1.00
  3. reg 2 : 4.20
  4. reg 2 : 3.10
  5. reg 2 : 4.80
  6. avg:4.03
  7. reg 3 : 7.10
  8. avg:7.10
  9. reg 4 : 1.00
  10. reg 4 : 2.00
  11. avg:1.50
  12. reg 5 : 1.50
  13. avg:1.50
  14. reg 6 : 1.10
  15. avg:1.10



© 2007 EvoTalk | iKon Wordpress Theme by TextNData | Powered by Wordpress | rakCha web directory
header.php