|
#1
|
|||
|
|||
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); Последний раз редактировалось nixon232, 19.12.2017 в 08:50. |