void CHisReport::ExitReport() { if ( IsEnabled() ) SaveReport(); if ( m_pXML ) delete m_pXML; m_pXML = NULL; m_bEnabled = FALSE; }
void OpenDoc(const CString& docPath,BOOL isVisiable) { MyWord->CreateApp(); if(isVisiable) MyWord->ShowApp(); else MyWord->HideApp(); if(!MyWord->Open(/*strPath*/docPath)) { MyWord->CloseApp(); return; } SaveReport(docPath); }
static bool wordOprate(const CString& savePath, const AcDbObjectId& objId) { AfxGetMainWnd()->BeginWaitCursor();//设置等待光标 if(CheckDocIsUsing(savePath)) return false; if(!MyWord->CreateDocuments()) { return false; } if(!MyWord->CreateDocument()) { return false; } WriteDrillDataToReport(objId); bool ret; if(!SaveReport(savePath)) ret = false; else ret = true; MyWord->CloseDocument(); MyWord->CloseApp(); AfxGetMainWnd()->EndWaitCursor();//结束等待光标 return ret; }
static bool wordOprate(CString templPath,CString savePath,CString& mineName) { AfxGetMainWnd()->BeginWaitCursor();//设置等待光标 if(CheckDocIsUsing(templPath)) return false; if(CheckDocIsUsing(savePath)) return false; MyWord->CreateApp(); //MyWord->ShowApp(); if(!MyWord->Open(/*strPath*/templPath)) { //MyWord->CloseApp(); return false; } //基础条件达标评价 if(-1 != templPath.Find(_T("tplBase"))) { if(!SetBaseReportVal(mineName)) { MyWord->CloseDocument(); MyWord->CloseApp(); AfxGetMainWnd()->EndWaitCursor();//结束等待光标 return false; } } else if ( -1 != templPath.Find(_T("tplAddF")) ) { AcStringArray bookMks,datas; if(!GetAddFuncDatas::getAllDatas(bookMks,datas)) { MyWord->CloseDocument(); MyWord->CloseApp(); AfxGetMainWnd()->EndWaitCursor();//结束等待光标 return false; } for( int i = 0; i < bookMks.length(); i++ ) { MyWord->Goto(bookMks[i].kACharPtr()); MyWord->WriteText(datas[i].kACharPtr()); //acutPrintf(_T("第%d个数据书签:%s\t数据:%s\n"),i+1,bookMks[i].kACharPtr(),datas[i].kACharPtr()); } } //抽采达标评价报告 else { SetFieldsValue(); } bool ret; MyWord->UpdateField(_T("CONT_UPDATE")); if(!SaveReport(savePath)) ret = false; else ret = true; //关闭之前把书签关闭 MyWord->ShowBookmarks(FALSE); MyWord->CloseDocument(); MyWord->CloseApp(); AfxGetMainWnd()->EndWaitCursor();//结束等待光标 return ret; }
HRESULT CAutotest::Autotest() { HRESULT hr = S_OK; DWORD dwTableSize = sizeof(m_sResultTable) / sizeof(m_sResultTable[0]); SW_TRACE_NORMAL("Info: Autotest begins...\n"); SaveAutotestProgress(); for (INT i = m_iRunCount; i < m_iTestCount; i++) { m_dwTestProgress = 1; SW_TRACE_NORMAL("Info: TestLoop #%d\n", i+1); if (GetAutotestStopFlag()) { SW_TRACE_DEBUG("Info: Autotest is forced to stop!\n"); break; } if( i < 10) { CTester::Product_SwitcherTest(3); CTester::Product_DcCtl_TEST(5); } AutotestRunOnce(m_sResultTable, dwTableSize); m_iRunCount++; if (GetAutotestStopFlag()) { SW_TRACE_DEBUG("Info: Autotest is forced to stop!\n"); break; } CHAR* pszReport = NULL; BOOL bOK = TRUE; GenerateReport((DWORD)i+1, m_sResultTable, dwTableSize, &pszReport, &bOK); if (GetAutotestStopFlag()) { SW_TRACE_DEBUG("Info: Autotest is forced to stop!\n"); SAFE_MEM_FREE(pszReport); break; } SaveReport(pszReport); if (GetAutotestStopFlag()) { SW_TRACE_DEBUG("Info: Autotest is forced to stop!\n"); SAFE_MEM_FREE(pszReport); break; } SendReport(pszReport, bOK); if (GetAutotestStopFlag()) { SW_TRACE_DEBUG("Info: Autotest is forced to stop!\n"); SAFE_MEM_FREE(pszReport); break; } SAFE_MEM_FREE(pszReport); } if (0 == m_iNGCount) { m_dwTestProgress = 0;//test OK } else { m_dwTestProgress = 2;//test failed } SetAutotestStopFlag(TRUE); SW_TRACE_NORMAL("Info: Autotest %s!\n", m_iRunCount >= m_iTestCount-1 ? "Done" : "Canceled"); return S_OK; }
void CCrashHandler::GenerateErrorReport(PEXCEPTION_POINTERS pExInfo) { CExceptionReport rpt(pExInfo); CMainDlg mainDlg; CZLib zlib; CString sTempFileName = CUtility::getTempFileName(); unsigned int i; // let client add application specific files to report if (m_lpfnCallback && !m_lpfnCallback(this)) return; //Определеяем, что делать с отчетом DumpType dumpType = Referenced;//По умолчанию сбрасываем только ту память, на которую идут ссылки в стеке ActionType actionType = GUI;//По умолчанию - выводим пользователю диалог CString action, storeFolder, dump; ATL::CRegKey rk; //Читаем из ключа с именем приложения int32_t lRet = rk.Open(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Cognitive Technologies Ltd.\\CuneiForm\\PumaCrashRpt\\") + CUtility::getAppName(), KEY_QUERY_VALUE); if(lRet != ERROR_SUCCESS) { //Читаем из дефолтного ключа lRet = rk.Open(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Cognitive Technologies Ltd.\\CuneiForm\\PumaCrashRpt\\Default"), KEY_QUERY_VALUE); } if(lRet == ERROR_SUCCESS) { //Читаем дейтсвие uint32_t dwBufLen = 1000; rk.QueryValue(action.GetBuffer(1000), "Action", &dwBufLen); action.ReleaseBuffer(MAX(dwBufLen - 1, 0)); //Читаем папку для автосохранения dwBufLen = 1000; rk.QueryValue(storeFolder.GetBuffer(1000), "StoreFolder", &dwBufLen); storeFolder.ReleaseBuffer(MAX(dwBufLen - 1, 0)); //Читаем тип дампа dwBufLen = 1000; rk.QueryValue(dump.GetBuffer(1000), "DumpType", &dwBufLen); dump.ReleaseBuffer(MAX(dwBufLen - 1, 0)); rk.Close(); if (!action.IsEmpty()) { if (action.CompareNoCase("GUI") == 0) actionType = GUI; else if (action.CompareNoCase("QuietStore") == 0) actionType = QuietStore; else if (action.CompareNoCase("NoAction") == 0) actionType = NoAction; } if (!dump.IsEmpty()) { if (dump.CompareNoCase("Mini") == 0) dumpType = Mini; else if (dump.CompareNoCase("Referenced") == 0) dumpType = Referenced; else if (dump.CompareNoCase("Full") == 0) dumpType = Full; } if (storeFolder.CompareNoCase("Temp folder") == 0) storeFolder = getenv("TEMP"); } if (actionType == NoAction) return; // add crash files to report m_files[rpt.getCrashFile(dumpType)] = CString((const char *)IDS_CRASH_DUMP); m_files[rpt.getCrashLog()] = CString((const char *)IDS_CRASH_LOG); // add symbol files to report for (i = 0; i < (uint)rpt.getNumSymbolFiles(); i++) m_files[(const char *)rpt.getSymbolFile(i)] = CString((const char *)IDS_SYMBOL_FILE); // zip the report if (!zlib.Open(sTempFileName)) return; // add report files to zip TStrStrMap::iterator cur = m_files.begin(); for (i = 0; i < m_files.size(); i++, cur++) zlib.AddFile((*cur).first); zlib.Close(); if (actionType == GUI) { // display main dialog mainDlg.m_pUDFiles = &m_files; //Сохраняем флаги по исключениям с плавающей точкой - кто-то их злобно сбрасывает при показе диалога uint oldFpState = _controlfp(0, 0); if (IDOK == mainDlg.DoModal()) { if (m_sTo.IsEmpty() || !MailReport(rpt, sTempFileName, mainDlg.m_sEmail, mainDlg.m_sDescription)) { SaveReport(rpt, sTempFileName); } } //Восстанавливаем флаги _controlfp(oldFpState, _MCW_DN | _MCW_EM | _MCW_IC | _MCW_RC | _MCW_PC); } else if (actionType == QuietStore) { // Just in-case it already exist ::DeleteFile(storeFolder + '\\' + CUtility::formatSaveFileName() + ".zip"); ::CopyFile(sTempFileName, storeFolder + '\\' + CUtility::formatSaveFileName() + ".zip", TRUE); } DeleteFile(sTempFileName); }
//taken and adapted from http://tangentsoft.net/wskfaq/examples/dllping.html void Find_Net(char *subnet, bool save) { FILE *fp; HINSTANCE hIcmp = LoadLibrary((LPCWSTR)"ICMP.DLL"); if (hIcmp == 0) { printf("Error: icmp.dll missing...\n"); return; } typedef HANDLE (WINAPI* pfnHV)(VOID); typedef BOOL (WINAPI* pfnBH)(HANDLE); typedef DWORD (WINAPI* pfnDHDPWPipPDD)(HANDLE, DWORD, LPVOID, WORD,PIP_OPTION_INFORMATION, LPVOID, DWORD, DWORD); pfnHV pIcmpCreateFile; pfnBH pIcmpCloseHandle; pfnDHDPWPipPDD pIcmpSendEcho; pIcmpCreateFile = (pfnHV)GetProcAddress(hIcmp, "IcmpCreateFile"); pIcmpCloseHandle = (pfnBH)GetProcAddress(hIcmp, "IcmpCloseHandle"); pIcmpSendEcho = (pfnDHDPWPipPDD)GetProcAddress(hIcmp,"IcmpSendEcho"); if ((pIcmpCreateFile == 0) || (pIcmpCloseHandle == 0) || (pIcmpSendEcho == 0)) { printf("unable to create the functions..."); return; } for(int i=1; i <= 255; i++) { char *ip; ip = (char *)sprintf("%s.%c", subnet, (char)i); if(save == true) *fp = MakeReport(ip); struct hostent* phe; if((phe = gethostbyname(ip)) == 0) { printf("error to convert ip address.."); return; } HANDLE hIP = pIcmpCreateFile(); if (hIP == INVALID_HANDLE_VALUE) { printf("Unable to open ping service"); return; } if(save == true) FileHeader(fp, ip); char acPingBuffer[64]; memset(acPingBuffer, '\xAA', sizeof(acPingBuffer)); PIP_ECHO_REPLY pIpe = (PIP_ECHO_REPLY)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT,sizeof(IP_ECHO_REPLY) + sizeof(acPingBuffer)); if (pIpe == 0) { printf("Failed to allocate global ping packet buffer."); return; } pIpe->Data = acPingBuffer; pIpe->DataSize = sizeof(acPingBuffer); DWORD dwStatus = pIcmpSendEcho(hIP, *((DWORD*)phe->h_addr_list[0]), acPingBuffer, sizeof(acPingBuffer), NULL, pIpe, sizeof(IP_ECHO_REPLY) + sizeof(acPingBuffer), 5000); if (dwStatus != 0) { //found printf("[FOUND] %s", ip); if(save == true) WriteOnReport(fp, ip); } else continue; GlobalFree(pIpe); } if(save == true) SaveReport(fp); FreeLibrary(hIcmp); }