Пример #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()
Пример #2
0
 def testEmptyMenuItemInfo(self):
     mii, extra = win32gui_struct.EmptyMENUITEMINFO()
     (
         fType,
         fState,
         wID,
         hSubMenu,
         hbmpChecked,
         hbmpUnchecked,
         dwItemData,
         text,
         hbmpItem,
     ) = win32gui_struct.UnpackMENUITEMINFO(mii)
     self.failUnlessEqual(fType, 0)
     self.failUnlessEqual(fState, 0)
     self.failUnlessEqual(wID, 0)
     self.failUnlessEqual(hSubMenu, 0)
     self.failUnlessEqual(hbmpChecked, 0)
     self.failUnlessEqual(hbmpUnchecked, 0)
     self.failUnlessEqual(dwItemData, 0)
     self.failUnlessEqual(hbmpItem, 0)
     # it's not clear if UnpackMENUITEMINFO() should ignore cch, instead
     # assuming it is a buffer size rather than 'current length' - but it
     # never has (and this gives us every \0 in the string), and actually
     # helps us test the unicode/str semantics.
     self.failUnlessEqual(text, "\0" * len(text))
Пример #3
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
Пример #4
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
Пример #5
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
Пример #6
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!")
Пример #7
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
Пример #8
0
    def get_menu_item_txt(self, menu, idx):
        """
        获取当前句柄窗口所有子窗口的句柄与名字
        :param menu:
        :param idx:
        :return:
        """

        mii, extra = win32gui_struct.EmptyMENUITEMINFO(
        )  # 新建一个win32gui的空的结构体mii
        GetMenuItemInfo(menu, idx, True, mii)  # 将子菜单内容获取到mii
        ftype, fstate, wid, hsubmenu, hbmpchecked, hbmpunchecked, \
        dwitemdata, text, hbmpitem = win32gui_struct.UnpackMENUITEMINFO(mii)  # 解包mii
        return text
Пример #9
0
 def testEmptyMenuItemInfo(self):
     mii, extra = win32gui_struct.EmptyMENUITEMINFO()
     fType, fState, wID, hSubMenu, hbmpChecked, hbmpUnchecked, \
     dwItemData, text, hbmpItem = win32gui_struct.UnpackMENUITEMINFO(
         mii)
     assert fType == 0
     assert fState == 0
     assert wID == 0
     assert hSubMenu == 0
     assert hbmpChecked == 0
     assert hbmpUnchecked == 0
     assert dwItemData == 0
     assert hbmpItem == 0
     # it's not clear if UnpackMENUITEMINFO() should ignore cch, instead
     # assuming it is a buffer size rather than 'current length' - but it
     # never has (and this gives us every \0 in the string), and actually
     # helps us test the unicode/str semantics.
     assert text == '\0' * len(text)
Пример #10
0
    print("2. window  text : ", win32gui.GetWindowText(window ))
    print("3. hwnd    text : ", win32gui.GetWindowText(hwnd   ))
    print("4. parent  text : ", win32gui.GetWindowText(parent ))
    print("5. child   text : ", win32gui.GetWindowText(childwindow  ))
    print("6. active  text : ", win32gui.GetWindowText(active ))
    print("7. focus   text : ", win32gui.GetWindowText(focus  ))
    print("8. getMenu text : ", win32gui.GetWindowText(menu   ))
    #print("9. CursorIntext : ", win32gui.GetWindowText(cursorinfo ))
    print("10.foregro text : ", win32gui.GetWindowText(foreground ))
    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)