{\r
va_list ap;\r
va_start(ap, fmt);\r
- TCHAR log[1024];\r
- _set_invalid_parameter_handler(invalid_parameter_handler);\r
- if (_vstprintf_s(log, fmt, ap) < 0)\r
- _tcscpy_s(log, _T("invalid format"));\r
-\r
+ TCHAR log[1024], msg[1024];\r
static int n = 0;\r
+ _set_invalid_parameter_handler(invalid_parameter_handler);\r
+ if (_vstprintf_s(msg, fmt, ap) < 0)\r
+ _tcscpy_s(msg, _T("invalid format"));\r
+ va_end(ap);\r
+ _stprintf_s(log, _T("%4d %8x: %s\t%s\r\n"), n++, GetCurrentThreadId(), AppName::GetAppName(), msg);\r
TCHAR path[MAX_PATH];\r
if (GetTempPath(MAX_PATH, path)) {\r
#ifndef _WIN64\r
- _tmakepath_s(path, NULL, path, _T("xkeylog"), _T("txt"));\r
+ _tmakepath_s(path, nullptr, path, _T("xkeylog"), _T("txt"));\r
#else\r
- _tmakepath_s(path, NULL, path, _T("xkeylog64"), _T("txt"));\r
+ _tmakepath_s(path, nullptr, path, _T("xkeylog64"), _T("txt"));\r
#endif\r
} else\r
_tcscpy_s(path, _T("c:\\xkeylog.txt"));\r
-\r
- FILE *fp;\r
- _tfopen_s(&fp, path, _T("a"));\r
- _ftprintf(fp, _T("%8d: %s\t%s\n"), n++, AppName::GetAppName(), log);\r
- fclose(fp);\r
+ HANDLE fh = CreateFile(path, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);\r
+ if (fh == INVALID_HANDLE_VALUE)\r
+ return;\r
+ SetFilePointer(fh, 0, nullptr, FILE_END);\r
+ DWORD written;\r
+ WriteFile(fh, log, static_cast<DWORD>(strlen(log)), &written, nullptr);\r
+ CloseHandle(fh);\r
}\r
\r
BOOL CUtils::IsSh()\r