akick
letter to god
Прошу помощи, если таковая возможна.
Мне нужно посылать нажатие мышки на обьект в 3д окошко, казалось бы все хорошо окошко эвенты получает, реагирует, но на обьект я нажать не могу ( видно, что щелчёк происходит - активность внутри окна меняется, но сама кнопка ноль реакции) еслибы это была обычная форма, то получаем хандлер кнопки и кликаем, но как быть с 3д ?)
так исследую имя класса:
так получаю для работы:
но все окно игрушки - одним обьектом представляется (как единая картинка чего и следовало ожидать) но тогда вопрос почему же не реагирует кнопка (не исключаю, что кнопка ведет проверку наявности указателя мыши в своей области, то можно ли как то это симитировать не двигая при этом мышь ?) )
посылать пытался через SendMessage, PostMessage:
но как и говрил - ничего не вышло, остановился на управлении мышью через евенты:
куда я ее оставлю туда они и кликает с заданной периодичностью, но это не выход ибо хотелось бы еще чем нибудь страдать кроме как наблюдать за кликаньем.(окно не нуждалось в фокусе, как это при посылке сообщений окну)
ЗЫ: игра - LineageII
PS: с целью познания
PSS: SendInput, DirectInput и т.д. не подходят, т.к. посылают евенты в активное окно а мне это не нужно не в коем образе, да и нужды в них нет, коль окно получает по Send,Post/Message
Мне нужно посылать нажатие мышки на обьект в 3д окошко, казалось бы все хорошо окошко эвенты получает, реагирует, но на обьект я нажать не могу ( видно, что щелчёк происходит - активность внутри окна меняется, но сама кнопка ноль реакции) еслибы это была обычная форма, то получаем хандлер кнопки и кликаем, но как быть с 3д ?)
так исследую имя класса:
Код:
var
P: TPoint;
WND: HWND;
Name: array [0..127] of Char;
begin
GetCursorPos(P); //берём позицию мыши
WND:=WindowFromPoint(P); //хандлер на елемент
GetClassName(WND,Name,sizeof(Name)); //имя класса
Код:
lineage_id := FindWindow(
nil,
'Lineage II'
);
посылать пытался через SendMessage, PostMessage:
Код:
PostMessage(lineage_id,
WM_LBUTTONDOWN,
MK_LBUTTON,
MakeLong(StrToInt(x_pos.Text), StrToInt(y_pos.Text)));
PostMessage(lineage_id,
WM_LBUTTONUP,
MK_LBUTTON,
MakeLong(StrToInt(x_pos.Text), StrToInt(y_pos.Text)));
Код:
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
ЗЫ: игра - LineageII
PS: с целью познания
PSS: SendInput, DirectInput и т.д. не подходят, т.к. посылают евенты в активное окно а мне это не нужно не в коем образе, да и нужды в них нет, коль окно получает по Send,Post/Message