int CLogCache::SaveOneItem(GitRev &Rev, LONG offset) { if(!Rev.m_IsDiffFiles) return -1; SetFilePointer(this->m_DataFile, offset,0, 0); SLogCacheRevItemHeader header; header.m_Magic=LOG_DATA_ITEM_MAGIC; header.m_Version=LOG_INDEX_VERSION; header.m_FileCount=Rev.m_Files.GetCount(); DWORD num; if(!WriteFile(this->m_DataFile,&header, sizeof(header),&num,0)) return -1; CString stat; CString name,oldname; for (int i = 0; i < Rev.m_Files.GetCount(); ++i) { SLogCacheRevFileHeader header; header.m_Magic=LOG_DATA_FILE_MAGIC; header.m_Version=LOG_INDEX_VERSION; header.m_Action = Rev.m_Files[i].m_Action; header.m_Stage = Rev.m_Files[i].m_Stage; header.m_ParentNo = Rev.m_Files[i].m_ParentNo; name = Rev.m_Files[i].GetGitPathString(); header.m_FileNameSize = name.GetLength(); oldname = Rev.m_Files[i].GetGitOldPathString(); header.m_OldFileNameSize = oldname.GetLength(); stat = Rev.m_Files[i].m_StatAdd; header.m_Add = (stat == _T("-"))? 0xFFFFFFFF:_tstol(stat); stat = Rev.m_Files[i].m_StatDel; header.m_Del = (stat == _T("-"))? 0xFFFFFFFF:_tstol(stat); if(!WriteFile(this->m_DataFile,&header, sizeof(header)-sizeof(TCHAR),&num,0)) return -1; if(!name.IsEmpty()) { if(!WriteFile(this->m_DataFile,name.GetBuffer(), name.GetLength()*sizeof(TCHAR),&num,0)) return -1; } if(!oldname.IsEmpty()) { if(!WriteFile(this->m_DataFile,oldname.GetBuffer(), oldname.GetLength()*sizeof(TCHAR),&num,0)) return -1; } } return 0; }
STDMETHODIMP CCoBroker::HandleRequest(BSTR dstUserId, ULONG dstSvcId, BSTR srcUserId, ULONG srcSvcId, ULONG rId, ULONG rType, ULONG param, BSTR params) { TRY_CATCH_COM USES_CONVERSION; bool handled=false; //::MessageBox(NULL,_T("CCoBroker::HandleRequest()"),NULL,0); Log.Add(_MESSAGE_,_T("CCoBroker::HandleRequest(%s,0x%x,%s,0x%x,0x%x,0x%x,0x%x,%s)"),_OLE2T(dstUserId),dstSvcId,_OLE2T(srcUserId),srcSvcId,rId,rType,param,_OLE2T(params)); if(BRT_BROKERPROXY_INFO==rType) { m_brokerProxyParams.m_pId=param; tstring _params=_OLE2T(params); m_brokerProxyParams.m_tId=_tstol(_params.c_str()); tstring::size_type iWnd=_params.find(_T(";;")); if(iWnd==tstring::npos||iWnd+2>=_params.size()) throw CExceptionBase(__LINE__,_T(__FILE__),_T(__DATE__),_T("Params value is not recognized; params=[%s]"),_params.c_str()); m_brokerProxyParams.m_wnd=reinterpret_cast<HWND>(_tstol(_params.c_str()+iWnd+2)); handled=true; } else if((BRT_SERVICE|BRT_RESPONSE)==rType&&BSVCIDPDV_JS==srcSvcId) handled=HandleRequestService(_OLE2T(dstUserId),dstSvcId,_OLE2T(srcUserId),srcSvcId,rId,rType,param,_OLE2T(params)); else if(BRT_PROPERTY_LOAD==rType) { //CBSimplePersistentStorageReg storage(HKEY_CURRENT_USER,DEF_REGISTRY_STORAGE); //CBSimplePersistentStorage storage; CBSimplePersistentStorageFile storage(LOGS_FOLDER_INSTANCE.GetLogsFolderName()+_T('\\')); tstring value=storage.Load(_OLE2T(params)); OnRequest(_OLE2T(srcUserId),srcSvcId,m_params.m_userId,BSVCIDPDV_BROKER,rId,BRT_PROPERTY_LOAD|BRT_RESPONSE,0/*no metter*/,Format(_T("%s;;%s"),_OLE2T(params),value.c_str())); handled=true; } else if(BRT_PROPERTY_SAVE==rType) { //CBSimplePersistentStorageReg storage(HKEY_CURRENT_USER,DEF_REGISTRY_STORAGE); //CBSimplePersistentStorage storage; CBSimplePersistentStorageFile storage(LOGS_FOLDER_INSTANCE.GetLogsFolderName()+_T('\\')); tstring _params=_OLE2T(params); tstring name,value; tstring::size_type iValue=_params.find(_T(";;")); if(iValue==tstring::npos||iValue+2>=_params.size()) throw CExceptionBase(__LINE__,_T(__FILE__),_T(__DATE__),_T("Params value is not recognized; params=[%s]"),_params.c_str()); name=_params.substr(0,iValue); value=_params.substr(iValue+2); storage.Save(name,value); handled=true; } else if(BRT_BROWSER_MINIMIZE==rType) { CWindowsMinimizer().MinimizeProcessWindows(m_brokerProxyParams.m_pId); handled=true; } if(!handled) OnJSRequest(_OLE2T(dstUserId),dstSvcId,_OLE2T(srcUserId),srcSvcId,rId,rType,param,_OLE2T(params)); CATCH_LOG_COM }
void ReadPostData(Buf &buf) { DWORD dwStep=4096; DWORD dwReadThis; DWORD dwThisStep; DWORD dwTotalBytes; Buf lpszContentLength; GetEnv(__T("CONTENT_LENGTH"), lpszContentLength); dwTotalBytes = (DWORD)_tstol(lpszContentLength.Get()); buf.AllocExact(dwTotalBytes + 1); buf.Clear(); do { dwThisStep = (DWORD) min(dwTotalBytes-buf.Length(),dwStep); dwReadThis = dwThisStep; if ( dwThisStep > 0 ) { dwReadThis = 0; if ( !ReadFile(GetStdHandle(STD_INPUT_HANDLE),buf.GetTail(),dwReadThis, &dwReadThis,NULL) ) dwReadThis = 0; } buf.SetLength(buf.Length() + dwReadThis); } while ( (dwReadThis==dwThisStep) && (buf.Length()<dwTotalBytes) ); *buf.GetTail() = __T('\0'); lpszContentLength.Free(); }
BOOL InjectDllToOne(LPCTSTR szProc, int nMode, LPCTSTR szDllPath) { int i = 0, nLen = (int)_tcslen(szProc); DWORD dwPID = 0; HANDLE hSnapShot = INVALID_HANDLE_VALUE; PROCESSENTRY32 pe; BOOL bMore = FALSE; // check if ProcName or PID for(i = 0; i < nLen; i++) if( !_istdigit(szProc[i]) ) break; if( i == nLen ) // PID { dwPID = (DWORD)_tstol(szProc); if( nMode == INJECTION_MODE ) InjectDll(dwPID, szDllPath); else EjectDll(dwPID, szDllPath); } else // ProcName { // Get the snapshot of the system pe.dwSize = sizeof(PROCESSENTRY32); hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL); if( hSnapShot == INVALID_HANDLE_VALUE ) { _tprintf(L"InjectDllToOne() : CreateToolhelp32Snapshot() failed!!! [%d]", GetLastError()); return FALSE; } // find process bMore = Process32First(hSnapShot, &pe); for( ; bMore; bMore = Process32Next(hSnapShot, &pe) ) { dwPID = pe.th32ProcessID; // 시스템의 안정성을 위해서 // PID 가 100 보다 작은 시스템 프로세스에 대해서는 // DLL Injection 을 수행하지 않는다. if( dwPID < 100 ) continue; if( !_tcsicmp(pe.szExeFile, szProc) ) { if( nMode == INJECTION_MODE ) InjectDll(dwPID, szDllPath); else EjectDll(dwPID, szDllPath); } } CloseHandle(hSnapShot); } return TRUE; }
//命令处理 LRESULT CGameServerDlg::OnMessageProcessCmdLine(WPARAM wParam, LPARAM lParam) { //变量定义 CWHCommandLine CommandLine; LPCTSTR pszCommandLine=(LPCTSTR)(lParam); //房间标识 TCHAR szSrverID[32]=TEXT(""); if (CommandLine.SearchCommandItem(pszCommandLine,TEXT("/ServerID:"),szSrverID,CountArray(szSrverID))==true) { //获取房间 WORD wServerID=(WORD)(_tstol(szSrverID)); //启动房间 if (wServerID!=0) { //设置变量 m_bAutoControl=true; //启动房间 StartServerService(wServerID); } } return 0L; }
BOOL COptionTreeItemEdit::GetEditLong(long &lReturn) { // Declare variables CString strWindowText; // Set blank lReturn = 0; // Get window text if (IsWindow(GetSafeHwnd())) { GetWindowText(strWindowText); } else { return FALSE; } // First see if we are in numerical mode if (GetOption(OT_EDIT_NUMERICAL) == FALSE) { return FALSE; } // See if string is numeric if (IsStringNumeric(strWindowText) == FALSE) { return FALSE; } // Convert string lReturn = _tstol(strWindowText); return TRUE; }
long IniTool::GetValueLong(CString sSection, CString sKey, long lDefault) { CString strDefault; strDefault.Format(_T("%ld"), lDefault); CString sValue = this->GetValueString(sSection, sKey, strDefault); return _tstol(sValue); }
//JP proxy configuration test void CPPgWebcachesettings::OnBnClickedTestProxy() { if (thePrefs.IsWebCacheTestPossible()) { if (!thePrefs.expectingWebCachePing) { //get webcache name from IDC_webcacheName CString cur_WebCacheName; GetDlgItem(IDC_webcacheName)->GetWindowText(cur_WebCacheName); if (cur_WebCacheName.GetLength() > 15 && cur_WebCacheName.Left(12) == "transparent@") //doesn't work for transparent proxies { AfxMessageBox(_T("Proxy Test can not test Transparent proxies. Test Canceled!")); return; } //get webcache port from IDC_webcachePort CString buffer; GetDlgItem(IDC_webcachePort)->GetWindowText(buffer); uint16 cur_WebCachePort = (uint16)_tstol(buffer); if (PingviaProxy(cur_WebCacheName, cur_WebCachePort)) { thePrefs.WebCachePingSendTime = ::GetTickCount(); thePrefs.expectingWebCachePing = true; AfxMessageBox(_T("Performing Proxy Test! Please check the log in the serverwindow for the results!")); } else AfxMessageBox(_T("Proxy Test Error!")); } else AfxMessageBox(_T("No New Test Started. There is already a Test in progress")); } else AfxMessageBox(_T("No Test Performed. Not all requirements met.\n Requirements:\n1. You have to be connected to a server\n2. You need to have a valid public IP\n3. You need to have a high ID\n4. Test does not work if you have too many open connections")); }
LONG CCmdLineParser::GetLongVal(LPCTSTR sKey) const { CValsMap::const_iterator it = findKey(sKey); if (it == m_valueMap.end()) return 0; return _tstol(it->second.c_str()); }
void CNumberEdit::OnChange() { CString strNew; GetWindowText( strNew ); if( m_nType == ntDouble ) { double dVal = _tstof( strNew ); if( dVal >= m_dMin && dVal <= m_dMax ) return; } else { long lVal = _tstol( strNew ); if( lVal >= m_lMin && lVal <= m_lMax ) return; } // Ausserhalb des Wertebereichs! // Alten Wert wiederherstellen SetWindowText( m_strText ); SetSel( m_nSelStart, m_nSelEnd ); MessageBeep( MB_ICONSTOP ); }
BOOL CSettingsAdvanced::OnApply() { int i = 0; while (settings[i].type != SettingTypeNone) { CString sValue = m_ListCtrl.GetItemText(i, 0); switch (settings[i].type) { case SettingTypeBoolean: { CRegDWORD s(_T("Software\\TortoiseGit\\") + settings[i].sName, settings[i].def.b); if (sValue.IsEmpty()) s.removeValue(); else { DWORD newValue = sValue.Compare(_T("true")) == 0; if (DWORD(s) != newValue) { s = newValue; } } } break; case SettingTypeNumber: { CRegDWORD s(_T("Software\\TortoiseGit\\") + settings[i].sName, settings[i].def.l); if (DWORD(_tstol(sValue)) != DWORD(s)) { s = _tstol(sValue); } } break; case SettingTypeString: { CRegString s(_T("Software\\TortoiseGit\\") + settings[i].sName, settings[i].def.s); if (sValue.Compare(CString(s))) { s = sValue; } } } i++; } return ISettingsPropPage::OnApply(); }
BOOL CConfigLoader::GetValue( CString szSection, CString szKey, int &nValue ) { CString szValue; nValue = 0; BOOL bRet = GetValue( szSection, szKey, szValue ); nValue = _tstol(szValue); return bRet; }
UINT GetNextDotInt(LPCWSTR& p) { UINT v = _tstol(p); p = wcschr(p, L'.'); if (p) ++p; return v; }
void CConfigDlg::OnBnClickedOk() { SaveAlarmsToReg(); CComboBox *playlists = (CComboBox*)GetDlgItem( IDC_PLAYLISTS ); int pl = playlists->GetCurSel(); if( pl != -1 ) { long id[4]; m_plids[pl].toBin( (void*)id ); binary b; b.data = std::string( (char*)id, 4 * sizeof(long) ); m_reg[_T("Playlist")] = b; m_reg[_T("PlaylistName")] = m_playlists[pl]; } CButton *shuffle = (CButton*)GetDlgItem( IDC_CHECK_SHUFFLE ); m_reg[_T("Shuffle")] = ( shuffle->GetCheck() == BST_CHECKED ) ? true : false; m_reg[_T("IncreaseVolume")] = ( m_increase.GetCheck() == BST_CHECKED ) ? true : false; m_reg[_T("IncreaseTime")] = m_secondsSlider.GetPos(); m_reg[_T("MinimizeOnAlarm")] = ( m_minimize.GetCheck() == BST_CHECKED ) ? true : false; m_reg[_T("MuteOnReturn")] = ( ((CButton*)GetDlgItem(IDC_DO_MUTE))->GetCheck() == BST_CHECKED ) ? true : false; m_reg[_T("EnableSnooze")] = ( ((CButton*)GetDlgItem(IDC_ENABLE_SNOOZE))->GetCheck() == BST_CHECKED ) ? true : false; TCHAR tm[20]; GetDlgItem(IDC_SNOOZE_TIME)->GetWindowText( tm, 19 ); long st = 0xff & _tstol( tm ); if( st < 1 ) st = 1; if( st > 60 ) st = 60; m_reg[_T("SnoozeTime")] = st; RegMap t( HKEY_CURRENT_USER ); t = t[_T("Software")][_T("Microsoft")][_T("Windows")][_T("CurrentVersion")][_T("Run")]; CButton *runonstartup = (CButton*)GetDlgItem( IDC_STARTUP_CHECK ); if( runonstartup->GetCheck() == BST_CHECKED ) { TCHAR f[MAX_PATH]; GetModuleFileName( NULL, f, MAX_PATH ); t[_T("iSnooze")] = f; } else { if( t.has_key( _T("iSnooze") ) ) t.deleteValue( _T("iSnooze") ); } m_reg[_T("BeenRun")] = true; ::PostMessage( m_parentHwnd, WM_CONFIG_UPDATE, 0, 0 ); OnOK(); }
void CWebWindow::OnCmdSendPromo(long longProductID, LPCTSTR bstrSubject, LPCTSTR bstrMessage, LPCTSTR bstrRecipients,long *pHandle) { // ::CoInitialize(NULL); m_SendStatus = DS_NONE; /// if(::IsWindow(pMessageParent->GetSafeHwnd())) // if(!((CMainDlg*)pMessageParent)->m_MessengerBar.ConnectEnable()) // { // /// WriteMessage Dialog About you OffLine... // pMessageParent->SendMessage(WM_SHOWMESSAGEBOX,(WPARAM)IDS_YOUOFFLINE); // return; // } try { ISessionPtr pSession = NULL; pSession = theNet2.GetSession(); IPromoPtr pPromo = pSession->CreatePromo(); pPromo->PutPID(_bstr_t(GUIDGen())); pPromo->PutBody(_bstr_t(bstrMessage)); pPromo->PutProduct_ID(longProductID); pPromo->PutSubject(_bstr_t(bstrSubject)) ; IUsersPtr pUsers = pPromo->GetRecipients(); CString str = bstrRecipients; while(!str.IsEmpty()) { IUserPtr pUser = pUsers->AddUser(); long UserId = _tstol((LPCTSTR)str); pUser->PutValue("@id",UserId); int FindPos = str.Find(','); if(FindPos==-1) break; str = str.Mid(FindPos + 1); } theNet2.LockTranslator(); try { m_Handle = pPromo->Send(); if(m_Handle) theNet2.AddToTranslator(m_Handle,this->GetSafeHwnd()); m_SendStatus = DS_SEND; (*pHandle) = m_Handle; } catch(...) { } theNet2.UnlockTranslator(); } catch(...) { } // ::CoUninitialize(); }
int _tmain(int argc,TCHAR *argv[]) { if (argc != 3) { _tprintf(L"USAGE:%s pid dll_path\n",argv[0]); return 1; } // inject dll if (InjectDll((DWORD)_tstol(argv[1]), argv[2])) _tprintf(L"InjectDll(\"%s\") success!\n",argv[2]); else _tprintf(L"InjectDll(\"%s\") failed!\n", argv[2]); return 0; }
int _tmain(int argc, TCHAR *argv[]) { if( argc != 3) { _tprintf(L"USAGE : %s <pid> <dll_path>\n", argv[0]); return 1; } // change privilege if( !SetPrivilege(SE_DEBUG_NAME, TRUE) ) return 1; // inject dll if( InjectDll((DWORD)_tstol(argv[1]), argv[2]) ) _tprintf(L"InjectDll(\"%s\") success!!!\n", argv[2]); else _tprintf(L"InjectDll(\"%s\") failed!!!\n", argv[2]); return 0; }
void CHardLimit::LoadSettings(CPartFile* file) { SettingsList daten; CString datafilepath; datafilepath.Format(_T("%s\\%s\\%s.ahl"), thePrefs.GetTempDir(),_T("Extra Lists"),file->GetPartMetFileName()); CString strLine; CStdioFile f; if (!f.Open(datafilepath, CFile::modeReadWrite | CFile::typeText)) return; while(f.ReadString(strLine)) { if (strLine.GetAt(0) == '#') continue; int pos = strLine.Find(_T('\0')); if (pos == -1) continue; CString strData = strLine.Left(pos); CSettingsData* newdata = new CSettingsData(_tstol(strData)); daten.AddTail(newdata); } f.Close(); if(daten.GetCount() < 1){ while (!daten.IsEmpty()) delete daten.RemoveHead(); return; } POSITION pos = daten.GetHeadPosition(); if(!pos) return; file->SetMaxSourcesPerFile(((CSettingsData*)daten.GetAt(pos))->dwData); daten.GetNext(pos); while (!daten.IsEmpty()) delete daten.RemoveHead(); }
int port_insert_custom (int inputmap_port, int devicetype, DWORD flags, const TCHAR *custom) { const TCHAR *p = custom; int mode, *events, *axistable; int max, evtnum; int kb; const TCHAR **eventorder; eventorder = getcustomeventorder (&devicetype); if (!eventorder) return FALSE; kb = inputdevice_get_device_total (IDTYPE_JOYSTICK) + inputdevice_get_device_total (IDTYPE_MOUSE); inputdevice_updateconfig_internal (&changed_prefs); inputdevice_compa_prepare_custom (&changed_prefs, inputmap_port, devicetype); inputdevice_updateconfig_internal (&changed_prefs); max = inputdevice_get_compatibility_input (&changed_prefs, inputmap_port, &mode, &events, &axistable); write_log (_T("custom='%s' max=%d port=%d dt=%d kb=%d kbnum=%d\n"), custom, max, inputmap_port, devicetype, kb, inputdevice_get_device_total (IDTYPE_KEYBOARD)); if (!max) return FALSE; while (p && p[0]) { int idx = -1, kc = -1; int flags = 0; int eventlen; const TCHAR *p2 = _tcschr (p, '='); if (!p2) break; const TCHAR *p4 = p; eventlen = -1; for (;;) { const TCHAR *p3 = _tcschr (p4, '.'); if (!p3 || p3 >= p2) { p3 = NULL; if (eventlen < 0) eventlen = p2 - p; break; } if (eventlen < 0) eventlen = p3 - p; if (!_tcsnicmp (p3 + 1, L"autorepeat", 10)) flags |= IDEV_MAPPED_AUTOFIRE_SET; p4 = p3 + 1; } for (int i = 0; eventorder[i]; i++) { if (_tcslen (eventorder[i]) == eventlen && !_tcsncmp (p, eventorder[i], eventlen)) { idx = i; break; } } p2++; if (p2[0] == '0' && (p2[1] == 'x' || p2[1] == 'X')) kc = _tcstol (p2 + 2, NULL, 16); else kc = _tstol (p2); p = _tcschr (p2, ' '); if (p) p++; if (idx < 0) continue; if (kc < 0) continue; evtnum = events[idx]; write_log (_T("kb=%d evt=%d kc=%02x flags=%08x\n"), kb, evtnum, kc, flags); for (int j = 0; j < inputdevice_get_device_total (IDTYPE_KEYBOARD); j++) { int wdnum = -1; for (int i = 0; i < inputdevicefunc_keyboard.get_widget_num (j); i++) { uae_u32 kc2 = 0; inputdevicefunc_keyboard.get_widget_type (j, i, NULL, &kc2); if (kc == kc2) { wdnum = i; break; } } if (wdnum >= 0) { //write_log (_T("kb=%d (%s) wdnum=%d\n"), j, inputdevicefunc_keyboard.get_friendlyname (j), wdnum); inputdevice_set_gameports_mapping (&changed_prefs, kb + j, wdnum, evtnum, flags, inputmap_port); inputdevice_set_gameports_mapping (&currprefs, kb + j, wdnum, evtnum, flags, inputmap_port); } else { write_log (_T("kb=%d (%): keycode %02x not found!\n"), j, inputdevicefunc_keyboard.get_friendlyname (j), kc); } } } inputdevice_updateconfig_internal (&changed_prefs); inputdevice_updateconfig (&currprefs); return TRUE; }
////////////////////////////////////////////////////////////////////////// //Purpose: Searches for a resource dll in sub directories using a search order // based on szPath - a directory to search res dll below. // see example at . //Input: szDllName - the string resource dll name to search. Ex: ToolUI.dll //Output: TCHAR *szPathOut - filled with absolute path to dll, if found. // size_t sizeInCharacters - buffer size in characters //Returns: Success (found dll) - S_OK , Failure - E_FAIL or E_UNEXPECTED ////////////////////////////////////////////////////////////////////////// HRESULT LoadUILibrary(LPCTSTR szPath, LPCTSTR szDllName, DWORD dwExFlags, HINSTANCE *phinstOut, LPTSTR szFullPathOut,size_t sizeInCharacters, LCID *plcidOut) { TCHAR szPathTemp[_MAX_PATH + 1] = _T(""); HRESULT hr = E_FAIL; LCID lcidFound = (LCID)-1; size_t nPathEnd = 0; // Gotta have this stuff! if (szPath==NULL || *szPath == '\0') { return E_POINTER; } if (szDllName==NULL || *szDllName == '\0') { return E_POINTER; } if (!szPath || !*szPath || !szDllName || !*szDllName) { return E_INVALIDARG; } if (phinstOut != NULL) { *phinstOut = NULL; } szPathTemp[_MAX_PATH-1] = L'\0'; // Add \ to the end if necessary _tcsncpy_s(szPathTemp,_countof(szPathTemp), szPath, _MAX_PATH-1); if (szPathTemp[_TCSNLEN(szPathTemp, _MAX_PATH-1) - 1] != L'\\') { _tcsncat_s(szPathTemp,_countof(szPathTemp), _T("\\"), PATHLEFT(szPathTemp)); } // Check if given path even exists if (GetFileAttributes(szPathTemp) == 0xFFFFFFFF) { return E_FAIL; } nPathEnd = _TCSNLEN(szPathTemp, _MAX_PATH-1); { LANGID langid=0; if (FAILED(GetUserDefaultUILanguageLegacyCompat(&langid))) { return E_UNEXPECTED; } const LCID lcidUser = MAKELCID(langid, SORT_DEFAULT); LCID rglcid[3]; rglcid[0] = lcidUser; rglcid[1] = MAKELCID(MAKELANGID(PRIMARYLANGID(lcidUser), SUBLANG_DEFAULT), SORTIDFROMLCID(lcidUser)); rglcid[2] = 0x409; for (int i = 0; i < _countof(rglcid); i++) { TCHAR szNumBuf[10]; // Check if it's the same as any LCID already checked, // which is very possible int n = 0; for (n = 0; n < i; n++) { if (rglcid[n] == rglcid[i]) break; } if (n < i) { continue; } szPathTemp[nPathEnd] = L'\0'; _itot_s(rglcid[i], szNumBuf,_countof(szNumBuf), 10); _tcsncat_s(szPathTemp, _countof(szPathTemp),szNumBuf , PATHLEFT(szPathTemp)); _tcsncat_s(szPathTemp,_countof(szPathTemp), _T("\\"), PATHLEFT(szPathTemp)); _tcsncat_s(szPathTemp,_countof(szPathTemp), szDllName, PATHLEFT(szPathTemp)); if (GetFileAttributes(szPathTemp) != 0xFFFFFFFF) { lcidFound = rglcid[i]; hr = S_OK; goto Done; } } } // None of the default choices exists, so now look for the dll in a folder below //the given path (szPath) { szPathTemp[nPathEnd] = L'\0'; _tcsncat_s(szPathTemp,_countof(szPathTemp), _T("*.*"), PATHLEFT(szPathTemp)); WIN32_FIND_DATA wfdw; HANDLE hDirs = FindFirstFile(szPathTemp, &wfdw); nPathEnd = _TCSNLEN(szPathTemp, _MAX_PATH-1)-3; if (hDirs != INVALID_HANDLE_VALUE) { while (FindNextFile(hDirs, &wfdw)) { // We are only interested in directories, since at this level, that should // be the only thing in this directory, i.e, LCID sub dirs if (wfdw.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // Skip current and previous dirs, "." and ".." if (!_tcscmp(wfdw.cFileName, _T(".")) || !_tcscmp(wfdw.cFileName, _T(".."))) continue; // Does this dir have a copy of the dll? szPathTemp[nPathEnd] = L'\0'; _tcsncat_s(szPathTemp,_countof(szPathTemp), wfdw.cFileName, PATHLEFT(szPathTemp)); _tcsncat_s(szPathTemp,_countof(szPathTemp), _T("\\"), PATHLEFT(szPathTemp)); _tcsncat_s(szPathTemp,_countof(szPathTemp), szDllName, PATHLEFT(szPathTemp)); if (GetFileAttributes(szPathTemp) != 0xFFFFFFFF) { // Got it! lcidFound = (LCID)_tstol(wfdw.cFileName); hr = S_OK; break; } } } FindClose(hDirs); } } Done: if (SUCCEEDED(hr)) { // Set the default LCID if (plcidOut) { if (lcidFound == (LCID)-1) { return E_UNEXPECTED; } *plcidOut = lcidFound; } // Finally, attempt to load the library // Beware! A dll loaded with LOAD_LIBRARY_AS_DATAFILE won't // let you use LoadIcon and things like that (only general calls like // FindResource and LoadResource). if (phinstOut != NULL) { *phinstOut = LoadLibraryEx(szPathTemp, NULL, dwExFlags); hr = (*phinstOut) ? S_OK : E_FAIL; } if ( szFullPathOut ) { _tcsncpy_s(szFullPathOut,sizeInCharacters, szPathTemp, _MAX_PATH-1); } } return hr; }
LRESULT CMainDlg::OnBnClickedAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { CWindow wndUrl = GetDlgItem(IDC_EDIT_URL); wndUrl.GetWindowText(strUrl); BOOL bDone = FALSE; HINTERNET hSession = NULL; HINTERNET hConnect = NULL; HINTERNET hRequest = NULL; do { std::wstring strUserAgentW= _T("Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"); hSession = ::InternetOpen(strUserAgentW.c_str(), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (hSession) { TCHAR szDomain[MAX_PATH]; INTERNET_PORT nServerPort = 0; if (!GetDomainAndPortFromUrl(strUrl, szDomain, nServerPort)) { bDone = FALSE; break; } hConnect = InternetConnect(hSession, szDomain, nServerPort, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0); if (hConnect) { DWORD dwOpenRequestFlags = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP | INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_NO_AUTH | INTERNET_FLAG_NO_UI | INTERNET_FLAG_NO_COOKIES | INTERNET_FLAG_IGNORE_CERT_CN_INVALID| INTERNET_FLAG_IGNORE_CERT_DATE_INVALID; if (nServerPort == INTERNET_DEFAULT_HTTPS_PORT) { dwOpenRequestFlags |= INTERNET_FLAG_SECURE; } int nPos = strUrl.Find(szDomain, 0); strUrl = strUrl.Right(strUrl.GetLength() - nPos - wcslen(szDomain)); hRequest = HttpOpenRequest(hConnect, NULL, strUrl, NULL, NULL, NULL, dwOpenRequestFlags, 0); LPCTSTR strContentType = L"Accept-Language:zh-CN"; CString strHeader(strContentType); //strHeader.Format(strContentType, m_strCookies); HttpAddRequestHeaders(hRequest, strHeader, strHeader.GetLength(), HTTP_ADDREQ_FLAG_ADD|HTTP_ADDREQ_FLAG_REPLACE); if (hRequest) { BOOL bResult = HttpSendRequest(hRequest, NULL, 0, NULL, 0); if ( ! bResult && GetLastError() == ERROR_INTERNET_INVALID_CA ) { DWORD dwFlags; DWORD dwBuffLen = sizeof(dwFlags); InternetQueryOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLen); dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA; InternetSetOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof (dwFlags) ); bResult = HttpSendRequest(hRequest, NULL, 0, NULL, 0); } if (bResult) { DWORD dwRetCode = 0; WCHAR szRetCode[64] = {0}; DWORD dwSize = 64; DWORD dwIndex = 0; ::HttpQueryInfo(hRequest, HTTP_QUERY_STATUS_CODE ,&szRetCode, &dwSize, &dwIndex); dwRetCode = _tstol(szRetCode); if (dwRetCode < HTTP_STATUS_BAD_REQUEST ) { //获取文件名称 TCHAR szContentDisposition[512] = {0}; DWORD dwContentDispositionSize = 512; dwIndex = 0; if (::HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_DISPOSITION, szContentDisposition, &dwContentDispositionSize, &dwIndex)) { //attachment; filename="a_log.zip" CString strDisposistion = szContentDisposition; GetDlgItem(IDC_EDIT_FILENAME).SetWindowText(strDisposistion); bDone = TRUE; } } else { bDone = FALSE; break; } } } else { bDone =FALSE; break; } } else { bDone = FALSE; break; } } } while (0); if (hRequest) { ::InternetCloseHandle(hRequest); } if (hConnect) { ::InternetCloseHandle(hConnect); } if (hSession) { ::InternetCloseHandle(hSession); } return 0; }
BOOL CPPgWebcachesettings::OnApply() { bool bRestartApp = false; CString buffer; // set thePrefs.webcacheName if(GetDlgItem(IDC_webcacheName)->GetWindowTextLength()) { CString nNewwebcache; GetDlgItem(IDC_webcacheName)->GetWindowText(nNewwebcache); if (thePrefs.webcacheName != nNewwebcache){ thePrefs.webcacheName = nNewwebcache; bRestartApp = true; } } // set thePrefs.webcachePort if(GetDlgItem(IDC_webcachePort)->GetWindowTextLength()) { GetDlgItem(IDC_webcachePort)->GetWindowText(buffer); uint16 nNewPort = (uint16)_tstol(buffer); if (!nNewPort) nNewPort=0; if (nNewPort != thePrefs.webcachePort){ thePrefs.webcachePort = nNewPort; } } // set thePrefs.webcacheEnabled thePrefs.webcacheEnabled = IsDlgButtonChecked(IDC_Activatewebcachedownloads)!=0; // set thePrefs.webcacheBlockLimit if(GetDlgItem(IDC_BLOCKS)->GetWindowTextLength()) { GetDlgItem(IDC_BLOCKS)->GetWindowText(buffer); uint16 nNewBlocks = (uint16)_tstol(buffer); if ((!nNewBlocks) || (nNewBlocks > 50000) || (nNewBlocks < 0)) nNewBlocks=0; if (nNewBlocks != thePrefs.GetWebCacheBlockLimit()){ thePrefs.SetWebCacheBlockLimit(nNewBlocks); } } // set thePrefs.WebCacheExtraTimeout thePrefs.SetWebCacheExtraTimeout(IsDlgButtonChecked(IDC_EXTRATIMEOUT) != 0); // set thePrefs.WebCacheCachesLocalTraffic uint8 cachestraffic; cachestraffic = (uint8)IsDlgButtonChecked(IDC_LOCALTRAFFIC); if (cachestraffic == 1) thePrefs.SetWebCacheCachesLocalTraffic(0); else thePrefs.SetWebCacheCachesLocalTraffic(1); // set thePrefs.PersistentConnectionsForProxyDownloads thePrefs.PersistentConnectionsForProxyDownloads = IsDlgButtonChecked(IDC_PERSISTENT_PROXY_CONNS)!=0; // set thePrefs.WCAutoupdate thePrefs.WCAutoupdate = IsDlgButtonChecked(IDC_UPDATE_WCSETTINGS)!=0; SetModified(FALSE); LoadSettings(); if (bRestartApp) { AfxMessageBox(GetResString(IDS_SETTINGCHANGED_RESTART)); thePrefs.WebCacheDisabledThisSession = true; } return CPropertyPage::OnApply(); }
void CSettingsSaver::ImportOldSettings(CPartFile* file) { SettingsList daten; CString datafilepath; datafilepath.Format(_T("%s\\%s\\%s.sivka"), file->GetTempPath(), _T("Extra Lists"), file->GetPartMetFileName()); CString strLine; CStdioFile f; if (!f.Open(datafilepath, CFile::modeReadWrite | CFile::typeText)) return; while(f.ReadString(strLine)) { if (strLine.GetAt(0) == _T('#')) continue; int pos = strLine.Find(_T('\n')); if (pos == -1) continue; CString strData = strLine.Left(pos); CSettingsData* newdata = new CSettingsData(_tstol(strData)); daten.AddTail(newdata); } f.Close(); POSITION pos = daten.GetHeadPosition(); if(!pos) return; if( ((CSettingsData*)daten.GetAt(pos))->dwData == 0 || ((CSettingsData*)daten.GetAt(pos))->dwData == 1) { file->SetEnableAutoDropNNS((((CSettingsData*)daten.GetAt(pos))->dwData)!=0); } else file->SetEnableAutoDropNNS(thePrefs.GetEnableAutoDropNNSDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 0 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 60000) file->SetAutoNNS_Timer(((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetAutoNNS_Timer(thePrefs.GetAutoNNS_TimerDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 50 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 100) file->SetMaxRemoveNNSLimit((uint16)((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetMaxRemoveNNSLimit(thePrefs.GetMaxRemoveNNSLimitDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData == 0 || ((CSettingsData*)daten.GetAt(pos))->dwData == 1) { file->SetEnableAutoDropFQS((((CSettingsData*)daten.GetAt(pos))->dwData)!=0); } else file->SetEnableAutoDropFQS(thePrefs.GetEnableAutoDropFQSDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 0 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 60000) file->SetAutoFQS_Timer(((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetAutoFQS_Timer(thePrefs.GetAutoFQS_TimerDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 50 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 100) file->SetMaxRemoveFQSLimit((uint16)((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetMaxRemoveFQSLimit(thePrefs.GetMaxRemoveFQSLimitDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData == 0 || ((CSettingsData*)daten.GetAt(pos))->dwData == 1) { file->SetEnableAutoDropQRS((((CSettingsData*)daten.GetAt(pos))->dwData)!=0); } else file->SetEnableAutoDropQRS(thePrefs.GetEnableAutoDropQRSDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 0 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 60000) file->SetAutoHQRS_Timer(((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetAutoHQRS_Timer(thePrefs.GetAutoHQRS_TimerDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 1000 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 10000) file->SetMaxRemoveQRS((uint16)((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetMaxRemoveQRS(thePrefs.GetMaxRemoveQRSDefault()); daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 50 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 100) file->SetMaxRemoveQRSLimit((uint16)((CSettingsData*)daten.GetAt(pos))->dwData); else file->SetMaxRemoveQRSLimit(thePrefs.GetMaxRemoveQRSLimitDefault()); if(daten.GetCount() > 10) // emulate StulleMule <= v2.2 files { // ==> Global Source Limit (customize for files) - Stulle daten.GetNext(pos); if( ((CSettingsData*)daten.GetAt(pos))->dwData == 0 || ((CSettingsData*)daten.GetAt(pos))->dwData == 1) { file->SetGlobalHL((((CSettingsData*)daten.GetAt(pos))->dwData)!=0); } else file->SetGlobalHL(thePrefs.GetGlobalHlDefault()); // <== Global Source Limit (customize for files) - Stulle } else file->SetGlobalHL(thePrefs.GetGlobalHlDefault()); while (!daten.IsEmpty()) delete daten.RemoveHead(); if (_tremove(datafilepath)) if (errno != ENOENT) AddLogLine(true, _T("Failed to delete %s, you will need to do this manually"), datafilepath); }
void CDVBChannel::FromString(CString strValue) { int i = 0; int nVersion; nVersion = _tstol(strValue.Tokenize(_T("|"), i)); m_strName = strValue.Tokenize(_T("|"), i); m_ulFrequency = _tstol(strValue.Tokenize(_T("|"), i)); m_nPrefNumber = _tstol(strValue.Tokenize(_T("|"), i)); m_nOriginNumber = _tstol(strValue.Tokenize(_T("|"), i)); if (nVersion > FORMAT_VERSION_0) { m_bEncrypted = !!_tstol(strValue.Tokenize(_T("|"), i)); } if (nVersion > FORMAT_VERSION_1) { m_bNowNextFlag = !!_tstol(strValue.Tokenize(_T("|"), i)); } m_ulONID = _tstol(strValue.Tokenize(_T("|"), i)); m_ulTSID = _tstol(strValue.Tokenize(_T("|"), i)); m_ulSID = _tstol(strValue.Tokenize(_T("|"), i)); m_ulPMT = _tstol(strValue.Tokenize(_T("|"), i)); m_ulPCR = _tstol(strValue.Tokenize(_T("|"), i)); m_ulVideoPID = _tstol(strValue.Tokenize(_T("|"), i)); m_nVideoType = (DVB_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i)); m_nAudioCount = _tstol(strValue.Tokenize(_T("|"), i)); if (nVersion > FORMAT_VERSION_1) { m_nDefaultAudio = _tstol(strValue.Tokenize(_T("|"), i)); } m_nSubtitleCount = _tstol(strValue.Tokenize(_T("|"), i)); for (int j = 0; j < m_nAudioCount; j++) { m_Audios[j].PID = _tstol(strValue.Tokenize(_T("|"), i)); m_Audios[j].Type = (DVB_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i)); m_Audios[j].PesType = (PES_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i)); m_Audios[j].Language = strValue.Tokenize(_T("|"), i); } for (int j = 0; j < m_nSubtitleCount; j++) { m_Subtitles[j].PID = _tstol(strValue.Tokenize(_T("|"), i)); m_Subtitles[j].Type = (DVB_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i)); m_Subtitles[j].PesType = (PES_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i)); m_Subtitles[j].Language = strValue.Tokenize(_T("|"), i); } }
bool CDVBChannel::FromString(CString strValue) { try { int i = 0; int nVersion = _tstol(strValue.Tokenize(_T("|"), i)); // We don't try to parse versions newer than the one we support if (nVersion > FORMAT_VERSION_CURRENT) { return false; } m_strName = strValue.Tokenize(_T("|"), i); m_ulFrequency = _tstol(strValue.Tokenize(_T("|"), i)); m_nPrefNumber = _tstol(strValue.Tokenize(_T("|"), i)); m_nOriginNumber = _tstol(strValue.Tokenize(_T("|"), i)); if (nVersion > FORMAT_VERSION_0) { m_bEncrypted = !!_tstol(strValue.Tokenize(_T("|"), i)); } if (nVersion > FORMAT_VERSION_1) { m_bNowNextFlag = !!_tstol(strValue.Tokenize(_T("|"), i)); } m_ulONID = _tstol(strValue.Tokenize(_T("|"), i)); m_ulTSID = _tstol(strValue.Tokenize(_T("|"), i)); m_ulSID = _tstol(strValue.Tokenize(_T("|"), i)); m_ulPMT = _tstol(strValue.Tokenize(_T("|"), i)); m_ulPCR = _tstol(strValue.Tokenize(_T("|"), i)); m_ulVideoPID = _tstol(strValue.Tokenize(_T("|"), i)); m_nVideoType = (DVB_STREAM_TYPE) _tstol(strValue.Tokenize(_T("|"), i)); m_nAudioCount = _tstol(strValue.Tokenize(_T("|"), i)); if (nVersion > FORMAT_VERSION_1) { m_nDefaultAudio = _tstol(strValue.Tokenize(_T("|"), i)); } m_nSubtitleCount = _tstol(strValue.Tokenize(_T("|"), i)); if (nVersion > FORMAT_VERSION_2) { m_nDefaultSubtitle = _tstol(strValue.Tokenize(_T("|"), i)); } for (int j = 0; j < m_nAudioCount; j++) { m_Audios[j].PID = _tstol(strValue.Tokenize(_T("|"), i)); m_Audios[j].Type = (DVB_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i)); m_Audios[j].PesType = (PES_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i)); m_Audios[j].Language = strValue.Tokenize(_T("|"), i); } for (int j = 0; j < m_nSubtitleCount; j++) { m_Subtitles[j].PID = _tstol(strValue.Tokenize(_T("|"), i)); m_Subtitles[j].Type = (DVB_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i)); m_Subtitles[j].PesType = (PES_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i)); m_Subtitles[j].Language = strValue.Tokenize(_T("|"), i); } if (nVersion > FORMAT_VERSION_3) { m_nVideoFps = (DVB_FPS_TYPE)_tstol(strValue.Tokenize(_T("|"), i)); m_nVideoChroma = (DVB_CHROMA_TYPE)_tstol(strValue.Tokenize(_T("|"), i)); m_nVideoWidth = _tstol(strValue.Tokenize(_T("|"), i)); m_nVideoHeight = _tstol(strValue.Tokenize(_T("|"), i)); m_nVideoAR = (DVB_AspectRatio_TYPE)_tstol(strValue.Tokenize(_T("|"), i)); } } catch (CException* e) { // The tokenisation can fail if the input string was invalid TRACE(_T("Failed to parse a DVB channel from string \"%s\""), strValue); e->Delete(); return false; } return true; }
Int64 cstring2Int64(LPCTSTR buff) { return _tstol(buff); }
LRESULT CMainFrame::OnReadGroup( WPARAM wParam, LPARAM lParam ) { int nGroupCount = 0; CUserDatas* lpUserDatas = ((CIFuzzMakerDoc*)GetActiveDocument())->GetUserDatas(); lpUserDatas->GetPatternGroupDataArray().RemoveAllWithDelete(); CPatternGroupInfoLoader PatternGroupInfoLoader; CPatternGroupInfoArray PatternGroupInfoArray; if( !PatternGroupInfoLoader.LoadText( lpUserDatas->GetGroupFileName(), &PatternGroupInfoArray ) ) return FALSE; for( nGroupCount=0; nGroupCount<PatternGroupInfoArray.GetSize(); nGroupCount++ ) { CPatternGroupInfo *lpPatternGroupInfo = PatternGroupInfoArray.GetAt( nGroupCount ); CPatternInfoLoader PatternInfoLoader; if( !PatternInfoLoader.LoadText( lpPatternGroupInfo->GetFileName(), lpPatternGroupInfo->GetPatternInfoArray() ) ) { } } for( nGroupCount=0; nGroupCount<PatternGroupInfoArray.GetSize(); nGroupCount++ ) { CPatternGroupInfo *lpPatternGroupInfo = PatternGroupInfoArray.GetAt( nGroupCount ); if( lpPatternGroupInfo->GetDispFlag() ) { CPatternGroupData* lpPatternGroupData = NULL; lpUserDatas->GetPatternGroupDataArray().AddWithNew( lpPatternGroupData ); lpPatternGroupData->SetDispName( lpPatternGroupInfo->GetDispName() ); for(int nPatternInfoCnt=0; nPatternInfoCnt<lpPatternGroupInfo->GetPatternInfoArray()->GetSize(); nPatternInfoCnt++ ) { CPatternInfo* lpPatternInfo = lpPatternGroupInfo->GetPatternInfoArray()->GetAt(nPatternInfoCnt); CPatternData* lpPatternData = NULL; CReadBufferArray BinaryDataArray; CStringA szValue = CT2A(lpPatternInfo->GetValue()); BYTE nDecValueByte = 0; unsigned short nDecValueShort = 0; unsigned int nDecValueInteger = 0; unsigned char* lpBuffer = NULL; if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_TEXT ) { // BinaryDataArray.SetSize( szValue.GetLength() * (!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()) ); lpBuffer = BinaryDataArray.GetData(); for( int nRepeat=0; nRepeat<(!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()); nRepeat++ ) { CopyMemory( &lpBuffer[nRepeat*szValue.GetLength()], szValue.GetBuffer(), szValue.GetLength() ); } }else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_DEC_8 ) { nDecValueByte = (BYTE)strtoul( szValue, NULL, 10 ); BinaryDataArray.SetSize( sizeof(nDecValueByte) * (!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()) ); lpBuffer = BinaryDataArray.GetData(); for( int nRepeat=0; nRepeat<(!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()); nRepeat++ ) { CopyMemory( &lpBuffer[nRepeat*sizeof(nDecValueByte)], &nDecValueByte, sizeof(nDecValueByte) ); } }else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_DEC_16_LITTLE ) { nDecValueShort = (unsigned short)strtoul( szValue, NULL, 10 ); nDecValueShort = CEndianConverter::ConvertToShort( (unsigned char*)&nDecValueShort, FALSE ); BinaryDataArray.SetSize( sizeof(nDecValueShort) * (!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()) ); lpBuffer = BinaryDataArray.GetData(); for( int nRepeat=0; nRepeat<(!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()); nRepeat++ ) { CopyMemory( &lpBuffer[nRepeat*sizeof(nDecValueShort)], &nDecValueShort, sizeof(nDecValueShort) ); } }else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_DEC_16_BIG ) { nDecValueShort = (unsigned short)strtoul( szValue, NULL, 10 ); nDecValueShort = CEndianConverter::ConvertToShort( (unsigned char*)&nDecValueShort, TRUE ); BinaryDataArray.SetSize( sizeof(nDecValueShort) * (!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()) ); lpBuffer = BinaryDataArray.GetData(); for( int nRepeat=0; nRepeat<(!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()); nRepeat++ ) { CopyMemory( &lpBuffer[nRepeat*sizeof(nDecValueShort)], &nDecValueShort, sizeof(nDecValueShort) ); } }else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_DEC_32_LITTLE ) { nDecValueInteger = (unsigned int)strtoul( szValue, NULL, 10 ); nDecValueInteger = CEndianConverter::ConvertToInteger( (unsigned char*)&nDecValueInteger, FALSE ); BinaryDataArray.SetSize( sizeof(nDecValueInteger) * (!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()) ); lpBuffer = BinaryDataArray.GetData(); for( int nRepeat=0; nRepeat<(!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()); nRepeat++ ) { CopyMemory( &lpBuffer[nRepeat*sizeof(nDecValueInteger)], &nDecValueInteger, sizeof(nDecValueInteger) ); } }else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_DEC_32_BIG ) { nDecValueInteger = (unsigned int)strtoul( szValue, NULL, 10 ); nDecValueInteger = CEndianConverter::ConvertToInteger( (unsigned char*)&nDecValueInteger, TRUE ); BinaryDataArray.SetSize( sizeof(nDecValueInteger) * (!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()) ); lpBuffer = BinaryDataArray.GetData(); for( int nRepeat=0; nRepeat<(!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()); nRepeat++ ) { CopyMemory( &lpBuffer[nRepeat*sizeof(nDecValueInteger)], &nDecValueInteger, sizeof(nDecValueInteger) ); } }else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_HEX ) { // BinaryDataArray.SetSize( (int)(szValue.GetLength()/2) ); for( int cCnt=0; cCnt<(int)(szValue.GetLength()/2); cCnt++ ) { unsigned int nVal = strtol( szValue.Mid( cCnt*2, 2 ),NULL,16 ); BinaryDataArray.SetAt(cCnt, nVal); } }else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_BIN ) { // CFileReader fl; if( !fl.ReadFile( lpPatternInfo->GetFileName(), BinaryDataArray ) ) continue; } lpPatternGroupData->GetPatternDataArray()->AddWithNew( lpPatternData ); lpPatternData->SetCheck( lpPatternInfo->GetSelectFlag() ); lpPatternData->SetDispName( lpPatternInfo->GetDispName() ); lpPatternData->SetDataType( lpPatternInfo->GetDataType() ); lpPatternData->SetValue( lpPatternInfo->GetValue() ); lpPatternData->SetRepeat( lpPatternInfo->GetRepeat() ); lpPatternData->SetWriteMode( lpPatternInfo->GetWriteMode() ); lpPatternData->SetFuzzArea( lpPatternInfo->GetFuzzArea() ); lpPatternData->SetSearchField( lpPatternInfo->GetSearchField() ); lpPatternData->SetFieldKey( lpPatternInfo->GetFieldKey() ); lpPatternData->SetDescription( lpPatternInfo->GetDescription() ); lpPatternData->SetBinaryDataArray( BinaryDataArray ); if( lpPatternInfo->GetFuzzArea() == CPatternData::FUZZAREA_FILE ) { TCHAR* endptr = NULL; int nFilePos = _tcstol( lpPatternInfo->GetFieldKey(), &endptr, 10 ); if( _tcslen(endptr) ) continue; lpPatternData->SetFilePos( nFilePos ); } if( lpPatternData->GetSearchField() == CPatternData::SEARCHFIELD_TAG || lpPatternData->GetSearchField() == CPatternData::SEARCHFIELD_TYPE || lpPatternData->GetSearchField() == CPatternData::SEARCHFIELD_SEGMENT ) { POSITION pos = NULL; CString szKey; CImageFileDirectoryInfo *lpImageFileDirectoryInfo = NULL; CFealdEntryInfo* lpFealdEntryInfo = NULL; CSegmentItemInfo* lpSegmentItemInfo = NULL; CTagTypeInfo* lpTagTypeInfo = NULL; int nFieldKey = 0; switch(lpPatternData->GetSearchField()) { case CPatternData::SEARCHFIELD_TAG: pos = m_FixedDatas.GetImageFileDirectoryInfoMap().GetStartPosition(); while(pos) { m_FixedDatas.GetImageFileDirectoryInfoMap().GetNextAssoc( pos, szKey, lpImageFileDirectoryInfo ); if( lpImageFileDirectoryInfo->GetFealdEntryInfoMap()->Lookup( lpPatternData->GetFieldKey(), lpFealdEntryInfo ) ) break; } break; case CPatternData::SEARCHFIELD_TYPE: nFieldKey = _tstol(lpPatternData->GetFieldKey()); m_FixedDatas.GetTagTypeInfoMap().Lookup( nFieldKey, lpTagTypeInfo ); break; case CPatternData::SEARCHFIELD_SEGMENT: m_FixedDatas.GetSegmentItemInfoMap().Lookup( lpPatternData->GetFieldKey(), lpSegmentItemInfo ); break; } lpPatternData->SetFealdEntryInfo( lpFealdEntryInfo ); lpPatternData->SetTagTypeInfo( lpTagTypeInfo ); lpPatternData->SetSegmentItemInfo( lpSegmentItemInfo ); } } } } SendMessageToDescendants( WM_APP_GROUP_DISP, NULL, NULL ); return TRUE; }
LRESULT CMainFrame::OnCreateFuzzList( WPARAM wParam, LPARAM lParam ) { CUserDatas* lpUserDatas = ((CIFuzzMakerDoc*)GetActiveDocument())->GetUserDatas(); CFealdEntryDataArray CheckedFealdEntryDataArray; CSegmentItemDataArray CheckedSegmentItemDataArray; CPatternDataArray CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_COUNT]; CheckedFealdEntryDataArray.SetAutoDelete( FALSE ); CheckedSegmentItemDataArray.SetAutoDelete( FALSE ); CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FIELDENTRY].SetAutoDelete( FALSE ); CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_SEGMENT].SetAutoDelete( FALSE ); CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FILE].SetAutoDelete( FALSE ); lpUserDatas->GetFuzzDataArray().RemoveAllWithDelete(); for( int nSegmentData=0; nSegmentData<lpUserDatas->GetSegmentDataArray().GetSize(); nSegmentData++ ) { CSegmentData* lpSegmentData = lpUserDatas->GetSegmentDataArray().GetAt(nSegmentData); // 選択されているタグ取得 for( int nExifData=0; nExifData<lpSegmentData->GetExifDataArray()->GetSize(); nExifData++ ) { CExifData* lpExifData = lpSegmentData->GetExifDataArray()->GetAt(nExifData); for( int nImageFileDirectoryData=0; nImageFileDirectoryData<lpExifData->GetImageFileDirectoryDataArray()->GetSize(); nImageFileDirectoryData++ ) { //bListGroup = FALSE; CImageFileDirectoryData* lpImageFileDirectoryData = lpExifData->GetImageFileDirectoryDataArray()->GetAt(nImageFileDirectoryData); for( int nFealdEntryData=0; nFealdEntryData<lpImageFileDirectoryData->GetFealdEntryDataArray()->GetSize(); nFealdEntryData++ ) { CFealdEntryData* lpFealdEntryData = lpImageFileDirectoryData->GetFealdEntryDataArray()->GetAt(nFealdEntryData); { if( lpFealdEntryData->GetCheck() ) { CheckedFealdEntryDataArray.Add( lpFealdEntryData ); } } } } } // 選択されているセグメントパターンを取得 if( lpSegmentData->GetSegmentInfo() && lpSegmentData->GetSegmentInfo()->IsAnalysisSegment() ) { for( int nSegmentItemData=0; nSegmentItemData<lpSegmentData->GetSegmentItemDataArray()->GetSize(); nSegmentItemData++ ) { CSegmentItemData *lpSegmentItemData = lpSegmentData->GetSegmentItemDataArray()->GetAt( nSegmentItemData ); if( lpSegmentItemData->GetCheck() ) { CheckedSegmentItemDataArray.Add( lpSegmentItemData ); } } } } // 選択されているパターンを取得 for( int nPatternGroupData=0; nPatternGroupData<lpUserDatas->GetPatternGroupDataArray().GetSize(); nPatternGroupData++ ) { CPatternGroupData* lpPatternGroupData = lpUserDatas->GetPatternGroupDataArray().GetAt( nPatternGroupData ); for( int nPatternData=0; nPatternData<lpPatternGroupData->GetPatternDataArray()->GetSize(); nPatternData++ ) { CPatternData* lpPatternData = lpPatternGroupData->GetPatternDataArray()->GetAt(nPatternData); if( lpPatternData->GetCheck() ) { if( lpPatternData->GetFuzzArea() == CPatternData::FUZZAREA_SEGMENT ) CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_SEGMENT].Add( lpPatternData ); else if( lpPatternData->GetFuzzArea() == CPatternData::FUZZAREA_FILE ) CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FILE].Add( lpPatternData ); else CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FIELDENTRY].Add( lpPatternData ); } } } for( int nFealdEntryData=0; nFealdEntryData<CheckedFealdEntryDataArray.GetSize(); nFealdEntryData++ ) { CFealdEntryData* lpFealdEntryData = CheckedFealdEntryDataArray.GetAt( nFealdEntryData ); for( int nPatternData=0; nPatternData<CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FIELDENTRY].GetSize(); nPatternData++ ) { CPatternData* lpPatternData = CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FIELDENTRY].GetAt( nPatternData ); // タグ指定あり if( lpPatternData->GetSearchField() == CPatternData::SEARCHFIELD_TAG ) { if( lpPatternData->GetFieldKey() != lpFealdEntryData->GetTagID() ) { continue; } } // タイプ指定あり if( lpPatternData->GetSearchField() == CPatternData::SEARCHFIELD_TYPE ) { if( _tstol(lpPatternData->GetFieldKey()) != lpFealdEntryData->GetType() ) { continue; } } CFuzzData* lpFuzzData = NULL; lpUserDatas->GetFuzzDataArray().AddWithNew( lpFuzzData ); lpFuzzData->SetFuzzDataType( CFuzzData::FUZZDATA_TYPE_FIELDENTRY ); lpFuzzData->SetFealdEntryData( lpFealdEntryData ); lpFuzzData->SetPatternData( lpPatternData ); } } for( int nSegmentItemData=0; nSegmentItemData<CheckedSegmentItemDataArray.GetSize(); nSegmentItemData++ ) { CSegmentItemData *lpSegmentItemData = CheckedSegmentItemDataArray.GetAt( nSegmentItemData ); for( int nPatternData=0; nPatternData<CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_SEGMENT].GetSize(); nPatternData++ ) { CPatternData* lpPatternData = CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_SEGMENT].GetAt( nPatternData ); // 指定あり if( lpPatternData->GetSearchField() == CPatternData::SEARCHFIELD_SEGMENT ) { if( lpPatternData->GetFieldKey() != lpSegmentItemData->GetSegmentItemInfo()->GetItemTag() ) { continue; } } CFuzzData* lpFuzzData = NULL; lpUserDatas->GetFuzzDataArray().AddWithNew( lpFuzzData ); lpFuzzData->SetFuzzDataType( CFuzzData::FUZZDATA_TYPE_SEGMENT ); lpFuzzData->SetSegmentItemData( lpSegmentItemData ); lpFuzzData->SetPatternData( lpPatternData ); } } for( int nPatternData=0; nPatternData<CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FILE].GetSize(); nPatternData++ ) { CPatternData* lpPatternData = CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FILE].GetAt( nPatternData ); CFuzzData* lpFuzzData = NULL; lpUserDatas->GetFuzzDataArray().AddWithNew( lpFuzzData ); lpFuzzData->SetFuzzDataType( CFuzzData::FUZZDATA_TYPE_FILE ); lpFuzzData->SetPatternData( lpPatternData ); } SendMessageToDescendants( WM_APP_FUZZ_LIST_DISP, NULL, NULL ); return TRUE; }