コード例 #1
0
void CtestDlg::Decrypt()
{
	CString temp,Alph;
	alphabet.GetWindowTextW(Alph);
	offset.GetWindowTextW(temp);
	int NewState=(int)_wcstoi64(temp.GetBuffer(),NULL,10);
	text.GetWindowTextW(temp);
	for(int i=0;i<temp.GetLength();i++)
	{
		int c=Alph.Find(temp[i]);
		if(c!=-1)
		{
			c+=NewState-state;
			if(c<0)
				c+=Alph.GetLength();
			temp.SetAt(i,Alph[c%Alph.GetLength()]);
		}
	}
	state=NewState;
	text.SetWindowTextW(temp);
}
コード例 #2
0
ファイル: xtail.cpp プロジェクト: alwynd/PublicGitRepo
///Button clicked.
void XTailForm::buttonClicked(int id)
{
	swprintf_s(tbuffer, L"XTailForm button clicked: %i\n", id);
	logger->debug(tbuffer);

	if (id == 99)
	{
		if (chunkCount < 1)
			return;
		current = -1;
		id = BTN_NEXT;
	}
	if (id == 98)
	{
		if (chunkCount < 1)
			return;
		current = chunkCount-1;
		id = BTN_NEXT;
	}

	if (id == BTN_PREV || id == BTN_NEXT)
	{
		if (id == BTN_PREV)
		{
			current -= 1;
			if (current < 0)
				current = 0L;
		}
		if (id == BTN_NEXT)
		{
			current += 1;
			if (current > chunkCount)
				current = chunkCount;
		}

		//Set the start/end chunks.
		__int64 len = getXTail()->len;

		__int64 startXX = (len/chunkCount) * current;
		__int64 endXX = startXX + MAX_FILE_BUFFER;
		if (startXX > len)
			startXX = len;
		if (endXX > len)
			endXX = len;

		swprintf_s(tbuffer, L"Current: %I64i, Start: %I64i, End: %I64i\n", current, startXX, endXX);
		logger->debug(tbuffer);

		swprintf_s(tbuffer, L"%I64i", startXX);
		SendMessageW(getHWND(TXT_BYTE_START), WM_SETTEXT, 2048, (LPARAM) tbuffer);

		swprintf_s(tbuffer, L"%I64i", endXX);
		SendMessageW(getHWND(TXT_BYTE_END), WM_SETTEXT, 2048, (LPARAM) tbuffer);

		id = BTN_LOAD;

	}


	if (id == BTN_LOAD)
	{
		chunkCount = 0l;


		ZeroMemory(tmp, sizeof(wchar_t) * 2048);
		getText(TXT_FILENAME, tmp, 2048);
		swprintf_s(tbuffer, L"Attempting to load file: %s\n", tmp);
		logger->debug(tbuffer);

		wchar_t fileName[2048];
		wcscpy_s(fileName, tmp);

		if (wcslen(tmp) < 1)
		{
			MessageBoxExW(hwnd, L"Please enter a valid filename.", L"Invalid Input", MB_OK, NULL);
			return;
		}

		ZeroMemory(tmp, sizeof(wchar_t) * 2048);
		getText(TXT_BYTE_START, tmp, 2048);
		swprintf_s(tbuffer, L"Start Pos: %s\n", tmp);
		logger->debug(tbuffer);
		if (wcslen(tmp) < 1)
		{
			MessageBoxExW(hwnd, L"Please enter a valid file start position.", L"Invalid Input", MB_OK, NULL);
			return;
		}

		wchar_t *tmpX;

		__int64 start = _wcstoi64(tmp, &tmpX, 10);
		swprintf_s(tbuffer, L"Got the start pos: %I64i\n", start);
		logger->debug(tbuffer);

		ZeroMemory(tmp, sizeof(wchar_t) * 2048);
		getText(TXT_BYTE_END, tmp, 2048);
		swprintf_s(tbuffer, L"End Pos: %s\n", tmp);
		logger->debug(tbuffer);
		if (wcslen(tmp) < 1)
		{
			MessageBoxExW(hwnd, L"Please enter a valid file end position.", L"Invalid Input", MB_OK, NULL);
			return;
		}

		__int64 end = _wcstoi64(tmp, &tmpX, 10);
		
		swprintf_s(tbuffer, L"Got the end pos: %I64i\n", end);
		logger->debug(tbuffer);

		if (start < 0 || end < 1 || (end < start))
		{
			swprintf_s(tbuffer, L"Invalid start(%I64i) and end(%I64i) pos", start, end);
			MessageBoxExW(hwnd, tbuffer, L"Invalid Input", MB_OK, NULL);
			return;
		}


		//Get the file/length.
		__int64 fileLength = getXTail()->getFileLength(fileName);
		swprintf_s(tbuffer, L"Got the file length: %I64i\n", fileLength);
		logger->debug(tbuffer);

		if (fileLength < 1)
		{
			swprintf_s(tbuffer, L"File (%s) is not valid.", fileName);
			MessageBoxExW(hwnd, tbuffer, L"Invalid Input", MB_OK, NULL);
			return;
		}

		if (start > fileLength)
		{
			swprintf_s(tbuffer, L"Start(%I64i) is > file length", start);
			MessageBoxExW(hwnd, tbuffer, L"Invalid Input", MB_OK, NULL);
			return;
		}

		if (end > fileLength)
			end = fileLength;

		//Update window caption.
		char fileNamea[2048];
		SendMessageA(getHWND(TXT_FILENAME), WM_GETTEXT, 2048, (LPARAM) fileNamea);

		wchar_t fmtFileLength[128];
		formatBytes(fileLength, fmtFileLength, 128);

		chunkCount = (fileLength / MAX_FILE_BUFFER);

		swprintf_s(tbuffer, L"Len(%s) - 63Kb Chunks(%I64i), Current: %I64i", fmtFileLength, chunkCount, current);
		logger->debug(tbuffer);

		SendMessageW(getHWND(LBL_CHUNKS), WM_SETTEXT, 2048, (LPARAM) tbuffer);

		//Attempt to load and display file.
		ZeroMemory(file_buffer, sizeof(wchar_t) * MAX_FILE_BUFFER);

		swprintf_s(tbuffer, L"going to call readChunk Start: %I64i, End: %I64i\n", start, end);
		logger->debug(tbuffer);

		if (!getXTail()->readChunk(start, end, file_buffer, MAX_FILE_BUFFER))
			return;
		setText(TXT_OUTPUT, file_buffer, MAX_FILE_BUFFER);
	}

}
コード例 #3
0
ファイル: macrocompiler.cpp プロジェクト: shmuz/Spring
static TToken getToken()
{
	oSrcString = sSrcString;
	int ch = getNextChar();
	bool verbStr=false;

	switch (ch)
	{
		case EOFCH:
		case 0:    currTok = tEnd;    break;
		case L',': currTok = tComma;  break;
		case L'+': currTok = tPlus;   break;
		case L'-': currTok = tMinus;  break;
		case L'*': currTok = tMul;    break;
		case L'/': currTok = tDiv;    break;
		case L'(': currTok = tLp;     break;
		case L')': currTok = tRp;     break;
		case L'^':

			if ((ch = getChar()) == L'^')
				currTok = tBoolXor;
			else
			{
				putBack(ch);
				currTok = tBitXor;
			}

			break;
		case L'~':

			if ((ch = getChar()) != L' ')
			{
				putBack(ch);
				currTok = tBitNot;
				break;
			}

			putBack(ch);   //????
			currTok = tEnd;
			break;
		case L'|':

			if ((ch = getChar()) == L'|')
				currTok = tBoolOr;
			else
			{
				putBack(ch);
				currTok = tBitOr;
			}

			break;
		case L'&':

			if ((ch = getChar()) == L'&')
				currTok = tBoolAnd;
			else
			{
				putBack(ch);
				currTok = tBitAnd;
			}

			break;
		case L'=':

			if ((ch = getChar()) == L'=')
				currTok = tEq;
			else
			{
				putBack(ch);
				currTok = tLet;
			}

			break;
		case L'>':

			switch ((ch = getChar()))
			{
				case L'=': currTok = tGe;     break;
				case L'>': currTok = tBitShr; break;
				default:
					putBack(ch);
					currTok = tGt;
					break;
			}

			break;
		case L'<':

			switch (ch = getChar())
			{
				case L'=': currTok = tLe;     break;
				case L'<': currTok = tBitShl; break;
				default:
					putBack(ch);
					currTok = tLt;
					break;
			}

			break;
		case L'!':

			if ((ch = getChar()) != L'=')
			{
				putBack(ch);
				currTok = tNot;
				break;
			}
			else
				currTok = tNe;

			break;

		case L'@':

			ch = getChar();
			if (ch != L'"')
			{
				putBack(ch);
				break;
			}
			verbStr=true;

    	case L'\"':
		{
			TToken __currTok = tNo;
			currVar = L"";

			while (((ch = getChar()) != EOFCH))
			{
				if (ch == L'\"')
				{
					if (verbStr)
					{
						ch = getChar();
						if (ch != L'\"')
						{
							putBack(ch);
							break;
						}
					}
					else
						break;
				}

				if (ch == L'\\' && !verbStr)
				{
					switch (ch = getChar())
					{
						case L'a' : ch = L'\a'; break;
						case L'b' : ch = L'\b'; break;
						case L'f' : ch = L'\f'; break;
						case L'n' : ch = L'\n'; break;
						case L'r' : ch = L'\r'; break;
						case L't' : ch = L'\t'; break;
						case L'v' : ch = L'\v'; break;
						case L'\'': ch = L'\''; break;
						case L'\"': ch = L'\"'; break;
						case L'\\': ch = L'\\'; break;
						case L'0': case L'1': case L'2': case L'3': case L'4': case L'5': case L'6': case L'7': // octal: \d \dd \ddd
						{
							BYTE n = ch - L'0';

							if ((unsigned int)(ch = getChar()) >= L'0' && (unsigned int)ch < L'8')
							{
								n = 8 * n + ch - L'0';

								if ((unsigned int)(ch = getChar()) >= L'0' && (unsigned int)ch < L'8')
									n = 8 * n + ch - L'0';
								else
									putBack(ch);
							}
							else
								putBack(ch);

							ch = n;
							break;
						}
						case L'x':
						{
							if (iswxdigit(ch = getChar()))
							{
								wchar_t value=hex2ch(ch);

								for (int ii=0; ii<3; ii++)
								{
									if (iswxdigit(ch = getChar()))
									{
										value=(value<<4)|hex2ch(ch);
									}
									else
									{
										putBack(ch);
										break;
									}
								}

								ch = value;
							}
							else
							{
								keyMacroParseError(err_Bad_Hex_Control_Char,--sSrcString,pSrcString);
								__currTok = tEnd;
							}

							break;
						}
						default:
						{
							keyMacroParseError(err_Bad_Control_Char,--sSrcString,pSrcString);
							__currTok = tEnd;
							break;
						}
					}
				}

				if (__currTok != tNo)
					break;

				currVar.AppendStr((wchar_t)ch);
			}

			if (__currTok == tNo)
				currTok = tStr;
			else
				currTok = __currTok;

			break;
		}
		case L'.':
		{
			ch = getChar();

			if (iswdigit(ch))
			{
				putBack(ch);
				ch=L'.';
			}
			else
			{
				currTok = tEnd; //???
				break;
			}
		}
		case L'0': case L'1': case L'2': case L'3': case L'4':
		case L'5': case L'6': case L'7': case L'8': case L'9':
		{
			static wchar_t buffer[256];
			wchar_t *ptrbuffer=buffer;
			bool isNum   = false;
			bool isHex   = false;
			bool isE     = false;
			bool isPoint = false;
			int ch2;

			for (;;)
			{
				*ptrbuffer++=(wchar_t)ch;

				switch (ch)
				{
					case L'x':
					case L'X':

						if (ptrbuffer == buffer + 2)
						{
							ch = getChar();

							if (iswxdigit(ch))
							{
								isHex=true;
								putBack(ch);
							}
							else
							{
								putBack(ch);
								isNum=true;
								break;
							}
						}

						break;
					case L'.':

						if (isPoint || isE)
						{
							isNum=true;
							break;
						}

						isPoint=true;
						break;
					case L'e':
					case L'E':

						if (isHex)
							break;

						if (isE)
						{
							isNum=true;
							break;
						}

						isE=true;
						ch2 = getChar();

						if (ch2 == L'-' || ch2 == L'+')
						{
							int ch3=getChar();

							if (iswdigit(ch3))
							{
								*ptrbuffer++=(wchar_t)ch2;
								*ptrbuffer++=(wchar_t)ch3;
							}
							else
							{
								putBack(ch3);  // !iswdigit
								putBack(ch2);  // -+
								putBack(ch);   // eE
							}
						}
						else if (!iswdigit(ch2))
						{
							putBack(ch2); // !iswdigit
							putBack(ch);  // eE
						}
						else
							putBack(ch);

						break;
					case L'a': case L'A':
					case L'b': case L'B':
					case L'c': case L'C':
					case L'd': case L'D':
					case L'f': case L'F':

						if (!isHex)
						{
							isNum=true;
							break;
						}

					case L'0': case L'1': case L'2': case L'3': case L'4':
					case L'5': case L'6': case L'7': case L'8': case L'9':
						//isNum=true;
						break;
					default:
						isNum=true;
						break;
				}

				if (isNum)
					break;

				ch = getChar();
			}

			if (ch != EOFCH)
				putBack(ch);

			*ptrbuffer++=(wchar_t)0;
			bool CheckIntNumber=true;

			if (buffer[0])
			{
				if (!(buffer[1] == L'x' || buffer[1] == L'X'))
				{
					for (ptrbuffer=buffer; *ptrbuffer ; ptrbuffer++)
					{
						if (*ptrbuffer == L'e' || *ptrbuffer == L'E' || *ptrbuffer == L'.')
						{
							CheckIntNumber=false;
							break;
						}
						else if (!iswdigit(*ptrbuffer))
							break;
					}
				}
			}
			else
				CheckIntNumber=false;

			if (CheckIntNumber)
			{
				currVar = _wcstoi64(buffer,&ptrbuffer,0);
				currTok = tInt;
			}
			else
			{
				currVar = wcstod(buffer,&ptrbuffer);
				currTok = tFloat;
			}

			break;
		}
		case L'%':
			ch = getChar();

			if ((IsAlphaNum(ch) || ch == L'_') || (ch == L'%'  && (IsAlphaNum(*sSrcString) || *sSrcString == L'_')))
			{
				getVarName(ch);
				putBack(ch);
				currTok = tVar;
			}
			else
				keyMacroParseError(err_Var_Expected,L""); // BUG nameString

			break;
		default:
		{
			if (IsAlpha(ch))   // || ch == L'_' ????
			{
				TToken __currTok = tNo;
				getFarName(ch);

				if (ch == L' ')
				{
					while (ch == L' ')
						ch = getNextChar();
				}

				if (ch == L'(')   //!!!! а пробелы пропустить? ДА!
					__currTok = tFunc;
				else
				{
					putBack(ch);

					for (int i = 0 ; i < MKeywordsSize ; i++)
						if (!StrCmpI(nameString, MKeywords[i].Name))
						{
							FARVar = MKeywords[i].Value;
							__currTok = tFARVar;
							break;
						}

					if (__currTok == tNo)
					{
						if (IsProcessFunc || currTok == tFunc || currTok == tLt) // TODO: уточнить
						{
							if (KeyNameMacroToKey(nameString) == -1 && KeyNameToKey(nameString) == -1 && checkMacroConst(nameString))
								__currTok = tConst;
							else
							{
								DWORD k=KeyNameToKey(nameString);

								if (k != (DWORD)-1)
								{
									currVar = (__int64)k;
									__currTok = tInt; //??
								}
								else
								{
									keyMacroParseError(err_Var_Expected,oSrcString,pSrcString,nameString);
								}
							}
						}
						else
						{
							if (KeyNameMacroToKey(nameString) == -1)
							{
								if (KeyNameToKey(nameString) == -1)
								{
									if (checkMacroConst(nameString))
										__currTok = tConst;
									else
										keyMacroParseError(err_Unrecognized_keyword,nameString);
								}
								else
								{
									currVar = (__int64)KeyNameToKey(nameString);
									__currTok = tInt; //??
								}
							}
						}
					}
				}

				if (__currTok != tNo)
					currTok=__currTok;
			}
			else
				currTok = tEnd;

			break;
		}
	}

	return currTok;
}
コード例 #4
0
ファイル: download.cpp プロジェクト: vaginessa/infekt
static void __cdecl HttpThread(void *pvStartupInfo)
{
	HANDLE hStartEvent = static_cast<HANDLE>(pvStartupInfo);

	std::wstring l_url = s_url,
		l_localPath = s_localPath,
		l_tempLocalPath = s_localPath + L".bak";
	HWND l_hDlg = s_hDlg;

	::SetEvent(hStartEvent);

	// get on with the actual downloading business:
	HINTERNET hInet;
	BOOL bSuccess = TRUE;

	hInet = InternetOpen(L"Mozilla/5.0 (compatible; HttpThread/1.0)",
		INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

	if(hInet)
	{
		HINTERNET hRequest;
		DWORD dwFlags = 0;

		if(l_url.find(L"https://") == 0)
			dwFlags |= INTERNET_FLAG_SECURE;

		hRequest = InternetOpenUrl(hInet, l_url.c_str(), NULL, 0, dwFlags, 0);

		if(hRequest)
		{
			__int64 uFileSize = 0;
			wchar_t wszSizeBuffer[32];
			DWORD dwLengthSizeBuffer = 32;

			if(HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH, wszSizeBuffer, &dwLengthSizeBuffer, NULL) == TRUE)
			{
				uFileSize = _wcstoi64(wszSizeBuffer, NULL, 10);

				SendMessage(l_hDlg, WM_DOWNLOAD_STARTED, (UINT_PTR)&uFileSize, 0);
			}

			if(uFileSize > 0)
			{
				char szBuffer[8192];
				DWORD dwRead;
				FILE *fFile = NULL;

				if(_wfopen_s(&fFile, l_tempLocalPath.c_str(), L"wb") != 0)
				{
					SendMessage(l_hDlg, WM_DOWNLOAD_FAILED, 0, 0);
				}

				s_uBytesReceived = 0;

				while(InternetReadFile(hRequest, szBuffer, 8191, &dwRead))
				{
					if(!dwRead || dwRead > 8191)
					{
						break;
					}

					size_t dwWritten = 0;

					if(fFile)
					{
						dwWritten = fwrite(szBuffer, dwRead, 1, fFile);
					}

					if(dwWritten != 1)
					{
						bSuccess = FALSE;
						break;
					}

					s_uBytesReceived += dwRead;
				}

				fclose(fFile);
			}

			if(bSuccess) bSuccess = (s_uBytesReceived == uFileSize);

			InternetCloseHandle(hRequest);
		}

		InternetCloseHandle(hInet);
	}

	if(!bSuccess)
	{
		SendMessage(l_hDlg, WM_DOWNLOAD_FAILED, 0, 0);
	}
	else
	{
		::MoveFileEx(l_tempLocalPath.c_str(), l_localPath.c_str(), MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING | MOVEFILE_WRITE_THROUGH);
		SendMessage(l_hDlg, WM_DOWNLOAD_COMPLETE, 0, 0);
	}

	s_bDownloading = false;
}
コード例 #5
0
void MenuItem::SetIcon()
{
  WCHAR command[MAX_PATH], args[MAX_PATH], lwrValue[MAX_LINE_LENGTH];
  HWND task;
  std::wstring app;

  wcscpy(lwrValue, menuItemData.value);
  _wcslwr(lwrValue);

  switch (menuItemData.type)
    {
    case IT_TASK:
#ifdef _W64
      task = (HWND)_wcstoi64(menuItemData.value, NULL, 10);
#else
      task = (HWND)wcstol(menuItemData.value, NULL, 10);
#endif
      icon = EGGetWindowIcon(NULL, task, true, true);
      /* If the task icon is NULL, generate a default icon using the
       * application's icon.
       */
      if (icon == NULL)
        {
          app = ELGetWindowApp(task, true);
          icon = EGGetFileIcon(app.c_str(), 16);
        }
      break;
    case IT_EXECUTABLE:
    case IT_FILE:
      if ((_wcsicmp(lwrValue, TEXT("%documents%")) == 0) ||
          (_wcsicmp(lwrValue, TEXT("%commondocuments%")) == 0))
        icon = EGGetSpecialFolderIcon(CSIDL_PERSONAL, 16);
      else if ((_wcsicmp(lwrValue, TEXT("%desktop%")) == 0) ||
               (_wcsicmp(lwrValue, TEXT("%commondesktop%")) == 0))
        icon = EGGetSpecialFolderIcon(CSIDL_DESKTOP, 16);
      else
        {
          ELParseCommand(lwrValue, command, args);
          icon = EGGetFileIcon(command, 16);
        }
      break;
    case IT_INTERNAL_COMMAND:
      app = menuItemData.value;
      app = ELToLower(app.substr(0, app.find_first_of(TEXT(" \t"))));
      if (app == TEXT("logoff"))
        icon = EGGetSystemIcon(ICON_LOGOFF, 16);
      else if (app == TEXT("shutdown"))
        icon = EGGetSystemIcon(ICON_SHUTDOWN, 16);
      else if (app == TEXT("run"))
        icon = EGGetSystemIcon(ICON_RUN, 16);
      else if (app == TEXT("quit"))
        icon = EGGetSystemIcon(ICON_QUIT, 16);
      else if (app == TEXT("lock"))
        icon = EGGetSystemIcon(ICON_LOCK, 16);
      break;
    case IT_SPECIAL_FOLDER:
        {
          UINT specialFolder = ELGetSpecialFolderIDFromName(menuItemData.value);
          icon = EGGetSpecialFolderIcon(specialFolder, 16);
        }
      break;
    case IT_FILE_MENU:
    case IT_FILE_SUBMENU:
      app = menuItemData.value;
      app = ELToLower(app.substr(0, app.find_first_of(TEXT("|"))));
      if ((app == TEXT("%documents%")) ||
          (app == TEXT("%commondocuments%")))
        icon = EGGetSpecialFolderIcon(CSIDL_PERSONAL, 16);
      else if ((app == TEXT("%desktop%")) ||
               (app == TEXT("%commondesktop%")))
        icon = EGGetSpecialFolderIcon(CSIDL_DESKTOP, 16);
      else
        icon = EGGetFileIcon(app.c_str(), 16);
      if (icon != NULL)
        break;
    case IT_XML_MENU:
    case IT_TASKS_MENU:
      wcscpy(command, ELGetCurrentPath().c_str());
      icon = EGGetFileIcon(command, 16);
      break;
    case IT_SETTINGS_MENU:
      icon = EGGetSystemIcon(ICON_EMERGE, 16);
      break;
    case IT_HELP_MENU:
      icon = EGGetSystemIcon(ICON_QUESTION, 16);
      break;
    }
}
コード例 #6
0
ファイル: iosocket.c プロジェクト: HeckMina/dprofiler
int CALLBACK
IoSkSortCallback(
	__in LPARAM First, 
	__in LPARAM Second,
	__in LPARAM Param
	)
{
    WCHAR FirstData[MAX_PATH + 1];
    WCHAR SecondData[MAX_PATH + 1];
	PDIALOG_OBJECT Object;
	PIO_FORM_CONTEXT Context;
	LISTVIEW_OBJECT *ListView;
	PIO_OBJECT_ON_DISK Object1, Object2;
	HWND hWnd;
    int Result;
	HWND hWndList;
	__int64 I1,I2;
	double F1,F2;

	hWnd = (HWND)Param;
	hWndList = GetDlgItem(hWnd, IDC_LIST_IO_SOCKET);

	Object = (PDIALOG_OBJECT)SdkGetObject(hWnd);
	Context = SdkGetContext(Object, IO_FORM_CONTEXT);

	ListView = Context->ListView;
	ListViewGetParam(hWndList, (LONG)First, (LPARAM *)&Object1);
	ListViewGetParam(hWndList, (LONG)Second, (LPARAM *)&Object2);

	ASSERT(Object1 != NULL);
	ASSERT(Object2 != NULL);

	ListView_GetItemText(hWndList, First,  ListView->LastClickedColumn, FirstData,  MAX_PATH);
	ListView_GetItemText(hWndList, Second, ListView->LastClickedColumn, SecondData, MAX_PATH);

    //
    // Symbol or Module name or Line
    //

	switch(ListView->LastClickedColumn){
	
	case _SkSourcePort:
	case _SkDestinePort:
	case _SkIoCount:
	case _SkReadCount:
	case _SkWriteCount:
	case _SkFailedCount:
	case _SkReadBytes:
	case _SkWriteBytes:
	case _SkMaxReadBytes:
	case _SkMeanReadBytes:
	case _SkMaxWriteBytes:
	case _SkMeanWriteBytes:

		I1 = _wcstoi64(FirstData, NULL, 10);
		I2 = _wcstoi64(SecondData, NULL, 10);
		Result = (int)(I1 - I2);
		break;

	case _SkSourceAddress:
	case _SkDestineAddress:
	case _SkProtocal:

		Result = wcsicmp(FirstData, SecondData);
		break;

	case _SkMaxReadLatency:
	case _SkMeanReadLatency:
	case _SkMaxWriteLatency:
	case _SkMeanWriteLatency:

		F1 = wcstod(FirstData, NULL);
		F2 = wcstod(SecondData, NULL);

		if (F1 < F2) {
			Result = -1;
		}
		else if (fabs(F1 - F2) < 0.0001f) {
			Result = 0;
		}
		else if (F1 > F2) {
			Result = 1;
		}
		else {
			Result = 0;
		}
		break;

	default:
		ASSERT(0);
		Result = 0;
	}
	
	return ListView->SortOrder ? Result : -Result;
}
コード例 #7
0
ファイル: util.cpp プロジェクト: flakes/mirc_fish_10
std::string HttpDownloadTextFile(const std::wstring& a_url)
{
	HINTERNET hInet;
	std::string sText;
	BOOL bSuccess = TRUE;

	hInet = ::InternetOpen(L"HttpDownloadTextFile/1.0", INTERNET_OPEN_TYPE_PRECONFIG, nullptr, nullptr, 0);

	if(hInet)
	{
		HINTERNET hRequest;
		DWORD dwTimeBuffer = 3000;

		::InternetSetOption(hInet, INTERNET_OPTION_CONNECT_TIMEOUT, &dwTimeBuffer, sizeof(dwTimeBuffer));

		hRequest = ::InternetOpenUrl(hInet, a_url.c_str(), nullptr, 0,
			INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_PRAGMA_NOCACHE |
			INTERNET_FLAG_NO_COOKIES | INTERNET_FLAG_NO_AUTH, 0);

		::InternetSetOption(hRequest, INTERNET_OPTION_IGNORE_OFFLINE, nullptr, 0);

		if(hRequest)
		{
			long long uFileSize = 0;

			if(true)
			{
				TCHAR szSizeBuffer[32];
				DWORD dwLengthSizeBuffer = 32;

				if(::HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH, szSizeBuffer, &dwLengthSizeBuffer, nullptr) == TRUE)
				{
					uFileSize = _wcstoi64(szSizeBuffer, nullptr, 10);
				}
			}

			if(uFileSize && uFileSize < 100 * 1024)
			{
				char szBuffer[8192] = {0};
				DWORD dwRead;

				while(::InternetReadFile(hRequest, szBuffer, 8191, &dwRead))
				{
					if(!dwRead || dwRead > 8191)
					{
						break;
					}

					if(lstrlenA(szBuffer) == dwRead)
					{
						sText += szBuffer;
					}
					else
					{
						// we got some binary stuff, but we don't want any.
						bSuccess = FALSE;
						break;
					}
				}
			}

			::InternetCloseHandle(hRequest);
		}

		::InternetCloseHandle(hInet);
	}

	return (bSuccess ? sText : "");
}