SetCursorPos i brak Focusa

0

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?

0

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.

0

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ą.

0

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));
0

Próbowałem obydwa sposoby i nie reaguje, dziwne, bo żadne z tych menu bocznych co są wysuwane w momencie przylegania kursora do krawędzi ekranu nie reagują na SetCursorPos.

1

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?

1 użytkowników online, w tym zalogowanych: 0, gości: 1