int x1,x2,y1,y2;
x1 = cursor.x - iFishX; x2 = cursor.x + iFishX;
y1 = cursor.y - iFishY; y2 = cursor.y + iFishY;
POINT pt;DWORD dwThreadID,dwCurrentThreadID;HWND hCurWnd;
for(iy=y1;iy<=y2;iy++)
for(ix=x1;ix<=x2;ix++)
{
::SetCursorPos(ix,iy);
::GetCursorPos(&pt);
hCurWnd = ::WindowFromPoint(pt);
if(hCurWnd != NULL)
{
dwThreadID = ::GetWindowThreadProcessId(hCurWnd, NULL);
dwCurrentThreadID = ::GetCurrentThreadId();
if(dwCurrentThreadID != dwThreadID)
{
if(::AttachThreadInput(dwCurrentThreadID, dwThreadID, TRUE))
{
hc = ::GetCursor();
if(hc!=hcur)
{
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
Sleep(iSleep+getRandom(-10, 10));
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
Sleep(iSleep+getRandom(-10, 10));
::AttachThreadInput(dwCurrentThreadID,dwThreadID,FALSE);
goto that_all;
}
:AttachThreadInput(dwCurrentThreadID, dwThreadID, FALSE);
}
}
}
}
Поймать момент смены курсора
Есть моё приложение CDialog.
Как возможно узнать моему приложению, что курсор сменил свой вид, когда пользователь двигает им над окном чужого приложения (например когда в чужом окне пользователь переместил курсор с кнопки в CEdit)?
ИМХО, только хук на движение курсора ставить, запоминать текущий, и сравнивать с предыдущим...
Эта операция мне нужна чтобы потом сделать ::GetCursorPos(&cursor); для определение координат места где он сменил свой вид
The specified CGI application encountered an error and the server terminated the process.
жаль
и спасибо
Тебе сюда МСДН перепечатать? И перевести на русский? Или за тебя все сделать?
Эх... "MSDN SetWindowsHookEx" - гугли на здоровье.
Лан проехал.
Задача поменялась. Нужно в определнной области чужой экранной формы определить что курсор поменяет свой вид при попадании на CEdit (причем не факт что там будет именно CEdit) и нажать правую кнопку мыши на нем. Никаких хуков не надо вовсе.
Решил таким образом:
Код:
Срабатывает 100%. Может кому пригодится. Удачи имба профи :o
[COLOR="gray"]ps: цикл что снаружи что если бы внутри по времени работает одинаково[/COLOR]