Здравствуйте, многоуважаемые рыцари круглого стола. Имеется такой Вопрос. Есть некая чужая программа. Я программно подвожу мышку к определенному ее элементу
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
09-12-2015 10:28
А еще такой вариант был:
SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE );
SetCursorPos(X,Y);
Тогда совсем никак. Если чужая прога на Delphi, то Hint это свойство и из другой программы его не достать. Если на API (без выкрутасов), то можно попробовать почитать в MSDN про "ToolTip" (всякие TTM_GETTOOLINFO), но тут без внедрения своей DLL не обойтись. А если вообще ничего о программе не известно, то совсем не получится.
Да мне и не надо показывать хинт или как-то его изменять. Мне надо его просто прочитать. Компонент неизвестный, причем я даже не берусь сказать, наследником какого стандартного компонента он является. Знаю только его HWND и то, что у него есть хинт.
WM_MOUSEMOVE мышь не двигает, так что вызов GetCursorPos вернет старые координаты, а система показа Hint-ов в Delphi (возможно и в других системах) использует именно GetCursorPos, так что управлять хинтами без фактического перемещения мыши, в общем случае, невозможно.
э-э тяжко, но попробую щас. Сообщу о результатах. Кстате, может есть какой-то способ получить просто этот хинт, мне обязательно, чтобы он высвечивался. Проблема в том, что это -нестандартный компонент и я не берусь утверждать, на основе чего он создан
Попробуйте послать контролу сообщение TTM_ACTIVATE
lResult = SendMessage( // returns LRESULT in lResult (HWND) hWndControl, // handle to destination control (UINT) TTM_ACTIVATE, // message ID (WPARAM) wParam, // = (WPARAM) (BOOL) fActivate; (LPARAM) lParam // = 0; not used, must be zero );
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.