void OverrideWndProc(WNDPROC pWndProc, WNDPROC WindowProc, HWND hWnd) { if (!IsWindow(hWnd)) return; if (!(pWndProc = (WNDPROC)GetWindowLongPtr(hWnd, GWLP_WNDPROC))) OutputDebugStringEx(L"pOldWndProc: %s", GetLastErrorEx().c_str()); if (!SetWindowLongPtr(hWnd, GWLP_WNDPROC, LONG_PTR(WindowProc))) OutputDebugStringEx(L"SetWindowLongPtr: %s", GetLastErrorEx().c_str()); }
HWND FindWindowByTitle(wstring find, bool exact) { wchar_t _title[256]; HWND hWnd = GetForegroundWindow(); while (hWnd != NULL) { int len = GetWindowText(hWnd, _title, 256); wstring title(_title); DWORD PID; GetWindowThreadProcessId(hWnd, &PID); if (GetCurrentProcessId() == PID) { if (exact) { if (!title.compare(find)) break; } else { if (!title.compare(0, find.length(), find)) break; } } hWnd = GetNextWindow(hWnd, GW_HWNDNEXT); } if (!hWnd) OutputDebugStringEx(L"Unable to find window \"%s\"", find.c_str()); else OutputDebugStringEx(L"HWND: 0x%x", hWnd); return hWnd; }
/** * 检查是否加载了siutf8插件 * @return [0-未加载 1-已加载] */ int CheckUtf8Loaded(void) { static int loaded = -1; if(loaded != -1) return loaded; HMODULE hmod = GetModuleHandle(SI_DLLNAME_UTF8); if(hmod == NULL) { loaded = 0; OutputDebugString("siutf8.dll未加载!"); return loaded; } GetU8Flag = (GetU8FlagFn)GetProcAddress(hmod, "FindU8FlagFromLink"); if(GetU8Flag == NULL) { loaded = 0; OutputDebugString("FindU8FlagFromLink函数未找到!"); return loaded; } else { loaded = 1; OutputDebugStringEx("FindU8FlagFromLink addr: 0x%p", GetU8Flag); } return loaded; }
FT_Panic( const char* fmt, ... ) { static char buf[8192]; va_list ap; va_start( ap, fmt ); vsprintf( buf, fmt, ap ); OutputDebugStringEx( buf ); va_end( ap ); exit( EXIT_FAILURE ); }
FT_Message( const char* fmt, ... ) { static char buf[8192]; va_list ap; va_start( ap, fmt ); vprintf( fmt, ap ); /* send the string to the debugger as well */ vsprintf( buf, fmt, ap ); OutputDebugStringEx( buf ); va_end( ap ); }