//负责接收上传操作的页面的URL ,待上传的本地文件路径 int CWebBase::UploadFile(LPCTSTR strURL, LPCTSTR strLocalFileName) { ASSERT(strURL != NULL && strLocalFileName != NULL); BOOL bResult = FALSE; DWORD dwType = 0; CString strServer; CString strObject; INTERNET_PORT wPort = 0; DWORD dwFileLength = 0; char * pFileBuff = NULL; CHttpConnection * pHC = NULL; CHttpFile * pHF = NULL; CInternetSession cis; bResult = AfxParseURL(strURL, dwType, strServer, strObject, wPort); if(!bResult) { return FALSE; } CFile file; try { if(!file.Open(strLocalFileName, CFile::shareDenyNone | CFile::modeRead)) return FALSE; dwFileLength = file.GetLength(); if(dwFileLength <= 0) return FALSE; pFileBuff = new char[dwFileLength]; memset(pFileBuff, 0, sizeof(char) * dwFileLength); file.Read(pFileBuff, dwFileLength); const int nTimeOut = 5000; cis.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, nTimeOut); //联接超时设置 cis.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 1); //重试1次 pHC = cis.GetHttpConnection(strServer, wPort); //取得一个Http联接 pHF = pHC->OpenRequest(CHttpConnection::HTTP_VERB_POST, strObject); if(!pHF->SendRequest(NULL, 0, pFileBuff, dwFileLength)) { delete[]pFileBuff; pFileBuff = NULL; pHF->Close(); pHC->Close(); cis.Close(); return FALSE; } DWORD dwStateCode = 0; pHF->QueryInfoStatusCode(dwStateCode); if(dwStateCode == HTTP_STATUS_OK) bResult = TRUE; } catch(CInternetException * pEx) { char sz[256] = ""; pEx->GetErrorMessage(sz, 25); CString str; str.Format("InternetException occur!\r\n%s", sz); AfxMessageBox(str); } catch(...) { DWORD dwError = GetLastError(); CString str; str.Format("Unknow Exception occur!\r\n%d", dwError); AfxMessageBox(str); } delete[]pFileBuff; pFileBuff = NULL; file.Close(); pHF->Close(); pHC->Close(); cis.Close(); return bResult; }
BOOL CT3000App::InitInstance() { try { // InitCommonControlsEx() is required on Windows XP if an application // manifest specifies use of ComCtl32.dll version 6 or later to enable // visual styles. Otherwise, any window creation will fail. INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // Set this to include all the common control classes you want to use // in your application. InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinAppEx::InitInstance(); HRESULT hr;// if(!AfxInitRichEdit()) { AfxMessageBox(IDS_INIT_RICHEDIT_ERROR);// return FALSE;// } if (!AfxSocketInit())// { AfxMessageBox(IDP_SOCKETS_INIT_FAILED);// return FALSE;// } // Initialize OLE libraries if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); #if 1 try { TCHAR exeFullPath[MAX_PATH+1]; // GetModuleFileName(NULL, exeFullPath, MAX_PATH); // (_tcsrchr(exeFullPath, _T('\\')))[1] = 0;// g_strDatabasefilepath=exeFullPath;// g_strExePth=g_strDatabasefilepath;// CreateDirectory(g_strExePth+_T("Database"),NULL);//creat database folder;// g_strOrigDatabaseFilePath=g_strExePth+_T("T3000.mdb");// g_strDatabasefilepath+=_T("Database\\T3000.mdb");// CString FilePath; HANDLE hFind;// WIN32_FIND_DATA wfd;// hFind = FindFirstFile(g_strDatabasefilepath, &wfd);// if (hFind==INVALID_HANDLE_VALUE)//说明当前目录下无t3000.mdb { //CopyFile(g_strOrigDatabaseFilePath,g_strDatabasefilepath,FALSE);// //没有找到就创建一个默认的数据库 FilePath=g_strExePth+_T("Database\\T3000.mdb"); HRSRC hrSrc = FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_T3000_DATABASE), _T("DB")); HGLOBAL hGlobal = LoadResource(AfxGetResourceHandle(), hrSrc); LPVOID lpExe = LockResource(hGlobal); CFile file; if(file.Open(FilePath, CFile::modeCreate | CFile::modeWrite)) file.Write(lpExe, (UINT)SizeofResource(AfxGetResourceHandle(), hrSrc)); file.Close(); ::UnlockResource(hGlobal); ::FreeResource(hGlobal); }// FindClose(hFind);// g_strDatabasefilepath=(CString)FOR_DATABASE_CONNECT+g_strDatabasefilepath;// g_strImgeFolder=g_strExePth+_T("Database\\image\\");// CreateDirectory(g_strImgeFolder,NULL);// JudgeDB(); //CString strocx=g_strExePth+_T("MSFLXGRD.OCX"); /*CStdioFile file; CString versionno; file. file.SetFilePath(_T("http://www.temcocontrols.com/ftp/software/T3000_Version.txt")); file.ReadString(versionno); file.Close();*/ //CFile file; // file.Open(_T("http://www.temcocontrols.com/ftp/software/T3000_Version.txt"),modeRead); InitModeName();// #if 0 CInternetSession session; CInternetFile *file=NULL; try { INTERNET_PROXY_INFO proxyinfo; proxyinfo.dwAccessType=INTERNET_OPEN_TYPE_PROXY; proxyinfo.lpszProxy=_T("192.168.0.4:8080 "); proxyinfo.lpszProxyBypass=NULL; if (!session.SetOption(INTERNET_OPTION_PROXY,(LPVOID)&proxyinfo,sizeof(INTERNET_PROXY_INFO))) { AfxMessageBox(_T("UserName")); } CString username=_T("alex"); if(!session.SetOption(INTERNET_OPTION_PROXY_USERNAME,username.GetBuffer(),username.GetLength()+ 1)){ AfxMessageBox(_T("UserName")); } CString password=_T("travel"); if(!session.SetOption(INTERNET_OPTION_PROXY_PASSWORD,password.GetBuffer(),password.GetLength()+ 1)){ AfxMessageBox(_T("Password")); } file=(CInternetFile*)session.OpenURL(_T("www.temcocontrols.com/ftp/software/T3000_Version.txt")); } catch (CInternetException* e) { file=NULL; e->Delete(); } CString version; if (file) { while(file->ReadString(version)!=NULL){ } AfxMessageBox(version); } #endif #endif // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need // Change the registry key under which our settings are stored // TODO: You should modify this string to be something appropriate // such as the name of your company or organization SetRegistryKey(_T("Temco T3000 Application"));// LoadStdProfileSettings(); // Load standard INI file options (including MRU)// InitContextMenuManager(); InitKeyboardManager(); InitTooltipManager(); CMFCToolTipInfo ttParams; ttParams.m_bVislManagerTheme = TRUE; theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL, RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams); #if 1 hr=CoInitialize(NULL);// if(FAILED(hr)) // { AfxMessageBox(_T("Error Initialize the COM Interface"));// return FALSE;// } #endif } catch (...) { AfxMessageBox(_T("Database operation to stop!")); } CString registerfilename; registerfilename=g_strExePth+_T("REG_msado15.bat"); // ::ShellExecute(NULL, _T("open"), registerfilename.GetBuffer(), _T(""), _T(""), SW_HIDE); registerfilename=g_strExePth+_T("REG_MSFLXGRD.bat"); //::ShellExecute(NULL, _T("open"), registerfilename.GetBuffer(), _T(""), _T(""), SW_HIDE); CString languagepath=g_strExePth+_T("\\Language"); m_locale.AddCatalogLookupPath(languagepath); m_locale.SetLanguage(CLanguageLocale::LANGUAGE_ENGLISH); // Register the application's document templates. Document templates // serve as the connection between documents, frame windows and views #ifndef Fance_Enable_Test CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CT3000Doc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CT3000View)); #endif #ifdef Fance_Enable_Test CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CT3000Doc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CDialogCM5_BacNet)); #endif if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); //cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing; //lsc // Dispatch commands specified on the command line. Will return FALSE if // app was launched with /RegServer, /Register, /Unregserver or /Unregister. if (!ProcessShellCommand(cmdInfo)) return FALSE; GdiplusStartupInput gdiplusStartupInput;// GdiplusStartup(&g_gdiplusToken, &gdiplusStartupInput, NULL);// #if 1 //////////////////////////////////////////////////////// _ConnectionPtr m_pCon; _RecordsetPtr m_pRs; m_pCon.CreateInstance(_T("ADODB.Connection")); hr=m_pRs.CreateInstance(_T("ADODB.Recordset")); if(FAILED(hr)) { AfxMessageBox(_T("Load msado12.dll erro")); return FALSE; } m_pCon->Open(g_strDatabasefilepath.GetString(),"","",adModeUnknown); m_pRs->Open(_T("select * from Userlogin"),_variant_t((IDispatch *)m_pCon,true),adOpenStatic,adLockOptimistic,adCmdText); int nRecord=m_pRs->GetRecordCount(); if (nRecord<=0) { g_bPrivilegeMannage=FALSE; } else { int nUse; _variant_t temp_variant; temp_variant=m_pRs->GetCollect("USE_PASSWORD");// if(temp_variant.vt!=VT_NULL) nUse=temp_variant; else nUse=0; if(nUse==-1) { g_bPrivilegeMannage=TRUE; } else { g_bPrivilegeMannage=FALSE; } } m_pRs->Close(); m_pCon->Close(); if (g_bPrivilegeMannage) {//for just quick debug,only on this computer if(!user_login()) { AfxMessageBox(_T("Error password!")); return false; } } #endif ((CMainFrame*)m_pMainWnd)->InitViews();// m_pMainWnd->SetWindowText(_T("T3000 Building Automation System"));// m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); } catch (...) { // AfxMessageBox(_T("Double click 'REG_msado15.dll',Please!\nAt C:\\Program Files\\Temcocontrols\\T3000")); // CString strFilter = _T("hex File;bin File|*.hex;*.bin|all File|*.*||"); // CFileDialog dlg(true,_T("hex"),NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_EXPLORER,strFilter); // dlg.DoModal(); // CFileDialog dlg(true,NULL,_T("C:\Program Files\Common Files\System\ado")); //dlg.lpstrInitialDir = "..\\hisdata"; //dlg.op //// // OPENFILENAME // if (dlg.DoModal()==IDOK) // { // path = dlg.GetPathName(); // pLogFile = fopen("Log.txt", "wt+"); // fprintf(pLogFile, "%s", (LPCSTR)path); // fclose(pLogFile); // pLogFile = NULL; // } // CFileDialog fileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, // NULL,NULL);//_T("工作表(*.xls)|*.xls|文本文件(*.txt)|*.txt||") // fileDlg.m_ofn.lpstrInitialDir = _T("C:\\Program Files\\Temcocontrols\\T3000\\REG_msado15.dll.bat"); // fileDlg.DoModal(); //::ShellExecute(NULL, _T("open"), _T("C:\\Program Files\\Temcocontrols\\T3000\\REG_msado15.dll.bat"), _T(""), _T(""), SW_SHOW); //vcredist_x86.zip // ::ShellExecute(NULL, _T("open"), _T("C:\\Program Files\\Temcocontrols\\T3000\\vcredist_x86.zip"), _T(""), _T(""), SW_SHOW); //这个要先试试,当电脑没有安装这个文件时,如何捕获这个信息,然后再执行这个。 AfxMessageBox(_T("Open'T3000'Again,Please!")); return TRUE; } return TRUE; }
CHAR* WebFetcher::GetHttp(LPCSTR lpServerName) { // start download file char *pBuf = NULL ; int nBufLen = 0 ; TRY { // connection CInternetSession sess ; sess.SetOption (INTERNET_OPTION_CONNECT_TIMEOUT, 30 * 1000) ; sess.SetOption (INTERNET_OPTION_CONNECT_BACKOFF, 1000) ; sess.SetOption (INTERNET_OPTION_CONNECT_RETRIES, 1) ; DWORD dwFlag = INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_RELOAD ; CHttpFile * pF = (CHttpFile*)sess.OpenURL(lpServerName, 1, dwFlag); ASSERT(pF); if (!pF) {AfxThrowInternetException(1);} // connection status CString str ; pF->QueryInfo (HTTP_QUERY_STATUS_CODE, str) ; // Proxy Authentication Required if (str == _T("407")) { CString strUsername, strPassword ; // pPara->pThis->df_Notify (GetMsg_ProxyValidate(), &WM_DLF_PROXY_VALIDATE(&lpServerName, &strUsername, &strPassword)) ; pF->SetOption (INTERNET_OPTION_PROXY_USERNAME, (VOID*)(LPCTSTR)strUsername, strUsername.GetLength()) ; pF->SetOption (INTERNET_OPTION_PROXY_PASSWORD, (VOID*)(LPCTSTR)strPassword, strPassword.GetLength()) ; pF->SendRequest (NULL) ; } pF->QueryInfo (HTTP_QUERY_STATUS_CODE, str) ; if (str != _T("200")) { pF->Close() ; delete pF ; AfxThrowInternetException(1); } // confirm update pF->QueryInfo (HTTP_QUERY_LAST_MODIFIED, str) ; /* if (!pPara->pThis->df_Notify (GetMsg_CheckTime(), &WM_DLF_CHECKTIME(&lpServerName, &str))) { pF->Close() ; delete pF ; AfxThrowInternetException(1); } */ // start download pF->QueryInfo (HTTP_QUERY_CONTENT_LENGTH, str) ; // file's length // pPara->pThis->df_Notify (GetMsg_StartDownload(), &pPara->strFileURL) ; if (_ttoi(str)) { // know file's size int nLen = (nBufLen = _ttoi(str)) ; char * p = (pBuf = new char[nLen+8]) ; ZeroMemory (p, nLen+8) ; // while (IsWindow(pPara->pThis->GetSafeHwnd())) while (true) { // download 8K every int n = pF->Read (p, (nLen < 8192) ? nLen : 8192) ; if (n <= 0) break ; // success exit p += n ; nLen -= n ; //pPara->pThis->df_Notify (GetMsg_Progress(), &WM_DLF_PROGRESS(&pPara->strFileURL, nBufLen-nLen, nBufLen)) ; } // interrupted if (nLen != 0) { delete[] pBuf; pBuf=NULL; nBufLen = 0 ; } } else { // don't know file's size, save context to a temp file. bstr_t strFile = QueryTempFilePath() ; CFile outFile (strFile, CFile::modeCreate|CFile::modeReadWrite) ; int n = (int)pF->GetLength() ; while (n) { char * pa = new char[n] ; n = pF->Read (pa, n) ; outFile.Write (pa, n) ; // pPara->pThis->df_Notify (GetMsg_Progress(), &WM_DLF_PROGRESS(&pPara->strFileURL, (int)outFile.GetLength(), 0)) ; n = (int)pF->GetLength() ; delete[] pa ; } outFile.Close() ; // success if (n == 0) { DWORD dw ; if (::InternetQueryDataAvailable ((HINTERNET)(*pF), &dw, 0, 0) && (dw == 0)) { LoadFileToBuffer (strFile, pBuf, nBufLen) ; } } ::DeleteFile(strFile) ; } pF->Close() ; delete pF ; } CATCH_ALL(e) {} END_CATCH_ALL /* if (pBuf) { //pPara->pThis->df_Notify (GetMsg_DownFinished(), &WM_DLF_FINISHED(&pPara->strFileURL, pBuf, nBufLen)) ; delete[] pBuf ; } else { //pPara->pThis->df_Notify (GetMsg_Error(), &pPara->strFileURL) ; }*/ //AfxMessageBox(pBuf); return pBuf; //} }
BOOL CLoginDlg::AuthWeb() { CString csBuff; char httpBuff[1024]; CString csHash; CMD5 md5SPIP; int nBytes; unsigned char lpszBuffer[16]; // Authentication for web pages TRY { CInternetSession session; CString csIdSession, csSession; csBuff.Empty(); memset(httpBuff, 0, 1024); session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 1000); session.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 3); CFile* pf = session.OpenURL(URL_LOGIN_WEB, 1, INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_RELOAD); while(nBytes = pf->Read(httpBuff, 1024)) { csBuff += httpBuff; } pf->Close(); if(csBuff.Find('/') != -1) { csSession = csBuff.Left(csBuff.Find('/')); csIdSession = csBuff.Mid(csSession.GetLength()+1); md5SPIP.SetContent(APP.m_csPassword + csSession); memset(lpszBuffer, 0, 16); md5SPIP.GetDigest(lpszBuffer); csHash = md5SPIP.ConvertToAscii(lpszBuffer); APP.m_bAuthWeb = TRUE; TRY { CHttpConnection* phttp = session.GetHttpConnection(_T(RYZOM_HOST)); CHttpFile* pfile = phttp->OpenRequest(CHttpConnection::HTTP_VERB_POST, "/betatest/betatest_login_valid.php"); if(pfile) { CString csHeaders = _T("Content-Type: application/x-www-form-urlencoded"); CString csFormParams = _T("txtLogin="******"&digest="+csHash+"&idsession="+csIdSession); TRY { csBuff.Empty(); pfile->SendRequest(csHeaders, (LPVOID)(LPCTSTR)csFormParams, csFormParams.GetLength()); UINT nRead = pfile->Read(csBuff.GetBuffer(15000), 14999); csBuff.ReleaseBuffer(); csBuff.SetAt(nRead, 0); if(csBuff.Find("/news/") == -1) { APP.m_bAuthWeb = FALSE; } } CATCH_ALL(error) { APP.m_bAuthWeb = FALSE; } END_CATCH_ALL; delete pfile; } else { APP.m_bAuthWeb = FALSE; } } CATCH_ALL(error) { APP.m_bAuthWeb = FALSE; } END_CATCH_ALL; }