• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運轉,開心的工作
            簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            為了生成flash文件方便,寫了個工具

            Posted on 2008-11-04 19:27 S.l.e!ep.¢% 閱讀(2283) 評論(4)  編輯 收藏 引用 所屬分類: VC
            為了生成 swf 方法,寫了個工具,寫得,寫得很粗糙……

            #include?<string>
            #include?
            <vector>
            #include?
            <iostream>
            using?namespace?std;
            #include?
            <windows.h>
            #include?
            <atlbase.h>

            namespace?std
            {
            ????typedef?basic_string
            <WCHAR,?char_traits<WCHAR>,?allocator<WCHAR>?>?tstring;
            }


            /*
            ?*?return?a?absolute?path?and?create?a?temporary?file?
            ?*?the?path?is?the?system?temp?directory,?
            ?*?the?filename?is?a?temporary?file?name?contains?[strTmp]?
            ?*?Tips!!!??Must?delete?the?temporary?file?after?used
            ?
            */

            string?getTempFilePath(string?strTmp)
            {
            ????TCHAR?szTmpPath[_MAX_PATH]?
            =?{0},?szTmpFileName[_MAX_PATH]?=?{0};

            ????DWORD?dwLength?
            =?::GetTempPath(_MAX_PATH,?szTmpPath);?

            ????
            /*
            ?????*?If?the?function?[GetTempPath]?fails,?return?a?null?string
            ?????
            */

            ????
            if?(?dwLength?==?0?)
            ????????
            return?__TEXT("");

            ????DWORD?dwLength2?
            =?::GetTempFileName(szTmpPath,?strTmp.c_str(),?0,?szTmpFileName);

            ????
            /*
            ?????*?If?the?function?[GetTempFileName]?fails,?return?a?null?string
            ?????
            */

            ????
            if?(?dwLength2?==?0?)
            ????????
            return?__TEXT("");

            ????
            return?szTmpFileName;
            ????
            }
            //?_getTempFilePath()

            int?main(int?argc,?char*?argv[])??
            {????
            ????
            int?nArgs?=?0;
            ????std::vector
            <std::tstring>?vecToken;

            ????LPWSTR?
            *?szArglist?=?::CommandLineToArgvW(::GetCommandLineW(),?&nArgs);

            ????
            if(?NULL?==?szArglist?)
            ????
            {
            ????????cout?
            <<?"Invalid?Parameter!"?<<?endl;
            ????????
            return?1;
            ????}

            ????
            else
            ????
            {
            ????????
            for(int?i?=?0;?i?<?nArgs;?i++)?
            ?????????????vecToken.push_back(szArglist[i]);

            ????}
            //?if(?NULL?==?szArglist?)

            ????
            //?Free?memory?allocated?for?CommandLineToArgvW?arguments.
            ????LocalFree(szArglist);

            ????
            if?(?vecToken.size()?!=?3?)
            ????
            {
            ????????cout?
            <<?"Invalid?Parameter!?"?<<?vecToken.size()?<<?endl;
            ????????
            return?1;
            ????}


            ????USES_CONVERSION;
            ????
            //cout?<<?(char*)W2A(vecToken[1].c_str())?<<?endl;
            ????
            //cout?<<?(char*)W2A(vecToken[2].c_str())?<<?endl;

            ????
            //?獲取目標目錄所有?*.fla?文件
            ????WIN32_FIND_DATA?filedata;
            ????
            char?strResultLogPath[MAX_PATH]?=?{0};
            ????sprintf(strResultLogPath,?_T(
            "%s\\*.fla"),?W2A(vecToken[1].c_str())?);
            ????std::vector
            <string>?vecFlaLogs;

            ????HANDLE?hFind?
            =?::FindFirstFile(strResultLogPath,?&filedata);?
            ????
            if?(hFind?==?INVALID_HANDLE_VALUE)?
            ????
            {
            ????????
            //?一個?.fla?文件都沒有
            ????}

            ????
            else
            ????
            {
            ????????
            do?
            ????????
            {
            ????????????
            //?filedata.cFileName?為?fla?的文件名
            ????????????vecFlaLogs.push_back(filedata.cFileName);
            ????????????OutputDebugString(filedata.cFileName);
            ????????????OutputDebugString(
            "\n");
            ????????}
            ?while(?FindNextFile(hFind,?&filedata)?);

            ????}
            //?if?(hFind?==?INVALID_HANDLE_VALUE)?
            ????::FindClose(hFind);

            ????
            //?存放臨時文件
            ????string?strFile??=?getTempFilePath("fl");
            ????
            string?strFile1?=?strFile;
            ????strFile?
            +=?".jsfl";

            ????FILE
            *?pFile?=?fopen(strFile.c_str(),?"wb");
            ????
            if?(?pFile?==?NULL?)
            ????
            {
            ????????cout?
            <<?"failed?to?open?file:?"?<<?strFile.c_str()?<<?endl;
            ????????
            return?1;
            ????}


            ????std::vector
            <string>::iterator?iter_t;
            ????
            for?(?iter_t?=?vecFlaLogs.begin();?iter_t?!=?vecFlaLogs.end();?iter_t++?)
            ????
            {
            ????????
            string?strFlaFile?=?*iter_t;
            ????????
            string?strSwfFile?=?*iter_t;

            ????????strSwfFile?
            =?strSwfFile.substr(0,?strSwfFile.length()?-?4);
            ????????strSwfFile?
            +=?".swf";
            ????????
            ????????fprintf(pFile,?
            "var?sourceFile?=?\"file:///%s/%s\";\r\n",?W2A(vecToken[1].c_str()),?strFlaFile.c_str());
            ????????fprintf(pFile,?"var?outputFile?=?\"file:///%s/%s\";\r\n",?W2A(vecToken[2].c_str()),?strSwfFile.c_str());
            ????????fprintf(pFile,?"var?doc?=?fl.openDocument(sourceFile);\r\n");
            ????????fprintf(pFile,?
            "doc.exportSWF(outputFile,?true);\r\n");
            ????????fprintf(pFile,?
            "doc.close(false);\r\n");

            ????}
            //?for?(?iter_t?=?vecFlaLogs.begin();?iter_t?!=?vecFlaLogs.end();?iter_t++?)

            ????fprintf(pFile,?
            "fl.quit();\r\n");
            ????
            ????
            //?關閉文件時才保存文件內容
            ????fclose(pFile);

            ????
            //?讀取注冊表
            ????HKEY?hk;
            ????LPCTSTR?data_Get
            ="Flash.JSCommandFile\\shell\\open\\command";
            ????
            //在注冊表里的位置?
            ????long?ret0?=?::RegOpenKeyEx(HKEY_CLASSES_ROOT,?//
            ???????????????????????????????data_Get,?0,?//必須為0,保留?
            ???????????????????????????????KEY_READ,???????//安全訪問屏蔽字,具體見MSDN,列出了所有的值?
            ???????????????????????????????&hk);
            ????
            ????
            //通過ERROR_SUCCESS判斷打開是否成功。?
            ????if(?ret0?!=?ERROR_SUCCESS)?
            ????
            {
            ????????cout?
            <<?"failed?to?read?regedit"?<<?endl;
            ????????
            return?1;
            ????}


            ????LPBYTE?win_version?
            =?new?BYTE[80];
            ????DWORD?type
            =REG_SZ;
            ????DWORD?cbData
            =80;
            ????
            long?ret1?=?::RegQueryValueEx(hk,?"",?//請求得到的鍵的名稱
            ??????????????????????????????????NULL,????????????????//保留,必須為
            ??????????????????????????????????NULL,???????????//值的類型,具體見MSDN
            ??????????????????????????????????win_version,?????????//接受值的緩沖區?
            ??????????????????????????????????&cbData);????????????//緩沖區大小
            ????
            ????
            if?(?ret1?!=?ERROR_SUCCESS?)
            ????
            {
            ????????cout?
            <<?"failed?to?read?regedit"?<<?endl;
            ????????
            return?1;
            ????}
            ?

            ????
            string?strRegValue?=?(char*)win_version;
            ????delete[]?win_version;
            ????::RegCloseKey(hk);
            ????
            ????strRegValue?
            =?strRegValue.substr(0,?strRegValue.length()?-?5);

            ????
            //?調用?flash.exe
            ????
            //strRegValue
            ????strRegValue?+=?"?";
            ????strRegValue?
            +=?"\"";
            ????strRegValue?+=?strFile;????
            ????strRegValue?
            +=?"\"";

            ????UINT?rlt?
            =?WinExec(strRegValue.c_str(),?SW_HIDE);
            ????
            ????
            switch?(rlt)?
            ????
            {
            ????
            case?0:
            ????????
            {
            ????????????cout?
            <<?"The?system?is?out?of?memory?or?resources."?<<?endl;
            ????????????
            return?1;
            ????????}

            ????????
            break;

            ????
            case?ERROR_BAD_FORMAT:
            ????????
            {
            ????????????cout?
            <<?"The?.exe?file?is?invalid."?<<?endl;
            ????????????
            return?1;
            ????????}

            ????????
            break;

            ????
            case?ERROR_FILE_NOT_FOUND:
            ????????
            {
            ????????????cout?
            <<?"The?specified?file?was?not?found."?<<?endl;
            ????????????
            return?1;
            ????????}

            ????????
            break;
            ????????
            ????
            case?ERROR_PATH_NOT_FOUND:
            ????????
            {
            ????????????cout?
            <<?"The?specified?path?was?not?found."?<<?endl;
            ????????????
            return?1;
            ????????}

            ????????
            break;????????
            ????}


            ????
            //?刪除臨時文件
            ????::DeleteFile(strFile.c_str());
            ????::DeleteFile(strFile1.c_str());

            ????
            return?0;
            }

            Feedback

            # re: 為了生成flash文件方便,寫了個工具  回復  更多評論   

            2008-11-05 02:11 by 女王
            這個代碼好像在www.zuiwanting.com見過

            # re: 為了生成flash文件方便,寫了個工具  回復  更多評論   

            2008-11-05 12:55 by 阿福
            好像是在命令行調用什么工具來編譯fla文件為swf
            其實用C++寫這樣的功能太浪費了
            用一個bat或VBS完全能搞定的

            # re: 為了生成flash文件方便,寫了個工具  回復  更多評論   

            2008-11-05 14:19 by tuzki
            該頁面有木馬………………
            最近發現cppblog好多頁面都被掛了木馬,大家小心一下

            # re: 為了生成flash文件方便,寫了個工具  回復  更多評論   

            2008-11-10 22:21 by mscorp
            你是指這個頁面有馬?
            暈,我沒裝殺毒軟件啊!!!!
            99精品久久久久久久婷婷| 久久99精品国产麻豆蜜芽| 久久久精品久久久久特色影视| AV无码久久久久不卡蜜桃| 中文字幕无码久久人妻| 欧美粉嫩小泬久久久久久久 | 久久久久久综合网天天| 日批日出水久久亚洲精品tv| 久久噜噜久久久精品66| 久久久精品日本一区二区三区 | 丁香五月综合久久激情| 国内精品久久久久久不卡影院| 亚洲一本综合久久| 久久久无码精品午夜| 中文字幕无码久久精品青草| 亚洲中文字幕无码久久精品1| 97久久婷婷五月综合色d啪蜜芽| 亚洲狠狠婷婷综合久久久久| 精品久久久久久久久午夜福利| 国产精品岛国久久久久| 久久毛片免费看一区二区三区| 亚洲精品无码久久久| 精品熟女少妇av免费久久| 香蕉久久夜色精品国产小说| 久久精品国产亚洲Aⅴ蜜臀色欲| 午夜精品久久久久久影视777 | 无码精品久久久天天影视| 欧洲成人午夜精品无码区久久| 久久99国产精品久久久| 久久无码国产| 国内精品久久久久久99蜜桃| 国産精品久久久久久久| 一本一本久久A久久综合精品 | 国产精品99久久免费观看| 久久久久久青草大香综合精品| 国产成人精品综合久久久久| 国产精品内射久久久久欢欢| 一本一本久久a久久综合精品蜜桃| 久久亚洲国产中v天仙www| 久久狠狠爱亚洲综合影院| 国产精品免费久久|