18.12.2017, 19:33
|
Активный
|
|
Регистрация: 26.01.2014
Сообщения: 282
Версия Delphi: delphi xe4
Репутация: выкл
|
|
OnSelectItemId?
Находим Список элеметов и CommandID От них
Код:
...
SetCursorPos(Pt.X,Pt.Y);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LeftDOWN, 0, 0, 0, 0);
{ Имитируем отпускание левой кнопки мыши }
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(500);
wndHwd:=WindowFromPoint(Mouse.CursorPos);
// pt:=ScreenToClient(Pt);
hMain := SendMessage(WindowFromPoint(Mouse.CursorPos), $01E1, 0, 0);
if IsMenu(hMain) then
begin
iItem := 0;
repeat
GetMenuString(hMain, iItem, @ItemString, 99, MF_BYPOSITION);
inc(iItem);
until (ItemString = 'File')or(iItem>GetMenuItemCount(hMain));
if ItemString = 'File' then
begin
cbbElem.Items.Clear;
hSub := GetSubMenu(hMain, iItem-1);
iItem := 0;
repeat
GetMenuString(hSub, iItem, @ItemString, 99, MF_BYPOSITION);
// ShowMessage(ItemString);
if ItemString<>'' then
cbbElem.Items.AddObject(ItemString,TObject(GetMenuItemID(hSub, iItem)));
...
until (iItem>GetMenuItemCount(hSub));
SelectItemID := GetMenuItemID(hSub, iItem-1);
// ShowMessage(Items);
Sleep(200);
SendMessage(wndHwd, WM_CLOSE, 0,0);
...
знаем, что ждет Эту комманду. Если предварительно вызвать попап, то без проблем можем вызвать событие, которое вызывается по клику
Код:
PostMessage(CmdWindow, WM_COMMAND, SelectItemID , 0);
ppWnd:= FindWindow(PWideChar('#32768'), nil);
if ppWnd<> 0 then
PostMessage(ppWnd, WM_CLOSE, 0, 0);
но если не вызывать попапку кликом, то команда, вероятно не инициализируется. Есть ли способ сделать инициализацию вручную?
|