1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
struct fake_timer_info
{
DWORD ms;
HWND hwnd;
};
DWORD WINAPI fake_time_thread_func(LPVOID p)
{
fake_timer_info* i = (fake_timer_info*)p;
HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
WaitForSingleObject(hEvent, i->ms);
PostMessage(i->hwnd, WM_TIMER, 0, 0);
delete i;
CloseHandle(hEvent);
return 0;
}
bool make_fake_timer(HWND hwnd, DWORD ms)
{
if (ms == INFINITE) return false;
fake_timer_info* info = new fake_timer_info;
info->ms = ms;
info->hwnd = hwnd;
CreateThread(NULL, 0, fake_time_thread_func, (LPVOID)info, 0, NULL);
return true;
} |
Partager