Ejemplo n.º 1
0
    def send_to_r(cmd):

        rid = win32gui.FindWindow("Rgui", None)
        if not rid:
            rid = win32gui.FindWindow("Rgui Workspace", None)

        if rid:
            clipboard.set_clipboard(cmd + "\n")

            menuitems = win32gui.GetMenu(rid)
            buf, extras = win32gui_struct.EmptyMENUITEMINFO()
            win32gui.GetMenuItemInfo(menuitems, 0, True, buf)

            if win32gui_struct.UnpackMENUITEMINFO(buf).text == "":
                editid = 2
            else:
                editid = 1
            buf, extras = win32gui_struct.EmptyMENUITEMINFO()
            win32gui.GetMenuItemInfo(menuitems, editid, True, buf)
            editmenu = win32gui_struct.UnpackMENUITEMINFO(buf).hSubMenu

            buf, extras = win32gui_struct.EmptyMENUITEMINFO()
            win32gui.GetMenuItemInfo(editmenu, 1, True, buf)
            pasteid = win32gui_struct.UnpackMENUITEMINFO(buf).wID
            win32api.PostMessage(rid, win32con.WM_SETFOCUS, pasteid, 0)

            sublime.set_timeout(
                lambda: win32api.PostMessage(rid, win32con.WM_COMMAND, pasteid,
                                             0), 50)
            clipboard.reset_clipboard()
Ejemplo n.º 2
0
def get_menu_item_txt(menu, idx):
    import win32gui_struct
    mii, extra = win32gui_struct.EmptyMENUITEMINFO() # 新建一个win32gui的空的结构体mii
    win32gui.GetMenuItemInfo(menu, idx, True, mii)
    ftype, fstate, wid, hsubmenu, hbmpchecked, hbmpunchecked,\
    dwitemdata, text, hbmpitem = win32gui_struct.UnpackMENUITEMINFO(mii) # 解包mii
    return text
Ejemplo n.º 3
0
    def _read_item(self):
        """Read the menu item info

        See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/menus/menureference/menufunctions/getmenuiteminfo.asp
        for more information."""

        item_info = MenuItemInfo()
        buf, extras = win32gui_struct.EmptyMENUITEMINFO()
        win32gui.GetMenuItemInfo(self.menu.handle, self.index, True, buf)
        item_info.fType, item_info.fState, item_info.wID, item_info.hSubMenu, item_info.hbmpChecked, \
        item_info.hbmpUnchecked, item_info.dwItemData, item_info.text, item_info.hbmpItem = win32gui_struct.UnpackMENUITEMINFO(buf)
        if six.PY2:
            item_info.text = item_info.text.decode(
                locale.getpreferredencoding())

        # OWNERDRAW case try to get string from BCMenu
        if item_info.fType & 256 and not item_info.text:
            mem = RemoteMemoryBlock(self.ctrl)
            address = item_info.dwItemData
            s = win32structures.LPWSTR()
            mem.Read(s, address)
            address = s
            s = ctypes.create_unicode_buffer(100)
            try:
                mem.Read(s, address)
                item_info.text = s.value
            except Exception:
                item_info.text = '!! non-supported owner drawn item !!'  # TODO: look into Tkinter case
            del mem

        return item_info
Ejemplo n.º 4
0
def GetMenuItemString(idx):
    hwnd = win32gui.FindWindow("#32768", None)
    MN_GETHMENU = 0x01E1
    hmenu = win32gui.SendMessage(hwnd, MN_GETHMENU, 0, 0)
    mii, extra = win32gui_struct.EmptyMENUITEMINFO()
    win32gui.GetMenuItemInfo(hmenu, idx, True, mii)
    fType, fState, wID, hSubMenu, hbmpChecked, hbmpUnchecked,\
    dwItemData, text, hbmpItem = win32gui_struct.UnpackMENUITEMINFO(mii)
    print text
    return text
Ejemplo n.º 5
0
 def _MergeMenus(self, activate_state):
     # Merge the operations we support into the top-level menus.
     # NOTE: This function it *not* called each time the selection changes.
     # SVUIA_ACTIVATE_FOCUS really means "have a selection?"
     have_sel = activate_state == shellcon.SVUIA_ACTIVATE_FOCUS
     # only do "file" menu here, and only 1 item on it!
     mid = shellcon.FCIDM_MENU_FILE
     # Get the hmenu for the menu
     buf, extras = win32gui_struct.EmptyMENUITEMINFO(win32con.MIIM_SUBMENU)
     win32gui.GetMenuItemInfo(self.hmenu, mid, False, buf)
     data = win32gui_struct.UnpackMENUITEMINFO(buf)
     submenu = data[3]
     print("Do someting with the file menu!")
Ejemplo n.º 6
0
    def _read_item(self):
        """Read the menu item info

        See https://msdn.microsoft.com/en-us/library/windows/desktop/ms647980.aspx
        for more information.
        """
        item_info = MenuItemInfo()
        buf, extras = win32gui_struct.EmptyMENUITEMINFO()
        win32gui.GetMenuItemInfo(self.menu.handle, self._index, True, buf)
        item_info.fType, item_info.fState, item_info.wID, item_info.hSubMenu, \
            item_info.hbmpChecked, item_info.hbmpUnchecked, item_info.dwItemData, \
            item_info.text, item_info.hbmpItem = win32gui_struct.UnpackMENUITEMINFO(buf)

        return item_info
Ejemplo n.º 7
0
    print("11.hdc     text : ", win32gui.GetWindowText(hdc   ))
    print("12.obj     text : ", win32gui.GetWindowText(obj    ))
    print("13.stockobjtext : ", win32gui.GetWindowText(stockobj))
    print("14.sysmenu text : ", win32gui.GetWindowText(sysmenu))
    print("15.menu         : ", win32gui.GetMenuItemRect(hwnd, menu, 2))

    buf, extras = win32gui_struct.EmptyMENUITEMINFO()
    #print(type(buf))
    #print("buf 0 : ", buf[0])
    print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n")

    try:
        #print(type( menu ))
        for i in range( win32gui.GetMenuItemCount(menu) ):
            win32gui.GetMenuItemInfo( menu, 
                i, 
                True, 
                buf)
            #win32gui.GetMenuInfo( menu, 
            #    buf )
            #print( "menu :" , buf[0] )
            _, rect = win32gui.GetMenuItemRect(hwnd, menu, i)
            #print( rect )
            if win32gui.PtInRect( rect, pt ):
                print(win32gui_struct.UnpackMENUITEMINFO(buf))

    except pywintypes.error :
        pass
    win32gui.DrawMenuBar(hwnd)
    #time.sleep(1)
    
    #print("menu count : ", win32gui.GetMenuItemCount(menu))