Cześć,
w jaki sposób mogę wywołać focus tak jak to się dzieje gdy np. przesunę myszkę po pulpicie na daną ikonkę i ona się podświetla?
Nie dzieje się tak w przypadku gdy ustawię kursor na tej pozycji poprzez SetCursorPos. Jest na to jakiś sposób?
Cześć,
w jaki sposób mogę wywołać focus tak jak to się dzieje gdy np. przesunę myszkę po pulpicie na daną ikonkę i ona się podświetla?
Nie dzieje się tak w przypadku gdy ustawię kursor na tej pozycji poprzez SetCursorPos. Jest na to jakiś sposób?
O co konkretnie chodzi? Przecież zmiana pozycji kursora przez SetCursorPos powoduje podświetlenie ikony na pulpicie dokładnie tak jak przy ręcznym jego przemieszczaniu.
Programowo fokus okna (także potomnego) można wywołać wysyłając komunikat WM_SETFOCUS.
Nie wiem czy kojarzysz w Windows 8 przycisk znajdujący się w lewym dolnym rogu ekranu (ImmersiveSwitchList) ukazujący 'nowoczesny' ekran startowy. Gdy najedziesz myszką to wyświetla się owy przycisk, ale jak wykonam setmousepos to nie reaguje, dopiero jak ruszę ręcznie myszką.
Tego to ja nie mogę sprawdzić bo mam Win 7 a próbowałeś 2 x SetCursorPos i w 2 wywołaniu zmienić pozycję o kilka nawet 1 pixel albo spróbuj wysłać komunikat coś w stylu
SendMessage(GetDesktopWindow, WM_MOUSEHOVER, 0, MAKELPARAM(XPos, YPos));
Poradziłem sobie. Kod wygląda tak:
SetCursorPos(X, Y); // ustaw pozycje
Mouse_Event(MOUSEEVENTF_MOVE, 0, 0, 0, GetMessageExtraInfo); // a ta linijka powoduje zamierzony efekt
Tylko jeszcze pytanie. dlaczego jeśli podstawię ten sam X i Y do Mouse_Event to kursor idzie w całkiem inne miejsce?
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.