예제 #1
0
    def SendRawCodes2(self, keyData, hwnd, mode):
        """
        Uses PostMessage and SetKeyboardState to emulate the the virtual
        keycode. Can send to a specified window handle.
        """
        keyboardStateBuffer = self.keyboardStateBuffer
        for block in keyData:
            if mode == 1 or mode == 2:
                for virtualKey in block:
                    keyCode = virtualKey & 0xFF
                    highBits = virtualKey & 0xFF00
                    lparam = ((MapVirtualKey(keyCode, 0) | highBits) << 16) | 1

                    keyboardStateBuffer[keyCode] |= 128

                    if keyCode == VK_LSHIFT:
                        keyboardStateBuffer[VK_SHIFT] |= 128
                    #elif keyCode == VK_MENU:
                    #    self.isSysKey = True
                    elif keyCode == VK_CONTROL:
                        keyboardStateBuffer[VK_LCONTROL] |= 128

                    if self.isSysKey:
                        mesg = WM_SYSKEYDOWN
                        lparam |= 0x20000000
                    else:
                        mesg = WM_KEYDOWN

                    SetKeyboardState(byref(keyboardStateBuffer))
                    PostMessage(hwnd, mesg, keyCode, lparam)
                    self.WaitForInputProcessed()

            if mode == 0 or mode == 2:
                for virtualKey in reversed(block):
                    keyCode = virtualKey & 0xFF
                    highBits = virtualKey & 0xFF00
                    lparam = (
                        ((MapVirtualKey(keyCode, 0) | highBits) << 16) |
                        0xC0000001
                    )
                    keyboardStateBuffer[keyCode] &= ~128

                    if keyCode == VK_LSHIFT:
                        keyboardStateBuffer[VK_SHIFT] &= ~128
                    #elif keyCode == VK_MENU:
                    #    self.isSysKey = False
                    elif keyCode == VK_CONTROL:
                        keyboardStateBuffer[VK_LCONTROL] &= ~128

                    if self.isSysKey:
                        mesg = WM_SYSKEYUP
                        lparam |= 0x20000000
                    else:
                        mesg = WM_KEYUP

                    SetKeyboardState(byref(keyboardStateBuffer))
                    PostMessage(hwnd, mesg, keyCode, lparam)
                    self.WaitForInputProcessed()
예제 #2
0
    def __call__(self, play=False, fav=1):
        flag = self.plugin.Execute('screamer.exe', self.plugin.ScreamerPath)
        if self.plugin.path2:
            self.plugin.Execute('Start_SR_Events.exe', self.plugin.path2)

        if flag:
            if self.plugin.path2:
                self.plugin.Execute('Start_SR_Events.exe', self.plugin.path2)
            if play:
                for n in range(50):
                    sleep(.2)
                    hwnds = Handle()
                    if len(hwnds) > 0:
                        flag = False
                        break
                if not flag:
                    sleep(2)
                    ScreamerPath = self.plugin.ScreamerPath
                    xmltoparse = ScreamerPath + '\\favorites.xml'
                    self.dh2 = my_xml_handler2()
                    sax.parse(xmltoparse.encode(eg.systemEncoding), self.dh2)
                    if fav <= len(self.plugin.favList):
                        self.plugin.fav_num = fav - 1
                        PostMessage(hwnds[0], WM_COMMAND, 9216 + fav, 0)
                        return str(fav) + ": " + self.plugin.favList[
                            self.plugin.fav_num]
                    else:
                        return self.text.over % (str(fav),\
                            str(len(self.plugin.favList)))
                else:
                    return self.plugin.text.text1
            else:
                return self.text.alt_ret
예제 #3
0
 def __call__(self):
     hwnd = HandleMV2()
     if hwnd:
         PostMessage(hwnd, WM_COMMAND, self.value, 2025)
     else:
         self.PrintError(self.plugin.text.text1)
         return self.plugin.text.text1
예제 #4
0
    def PlayFavFromMenu(self):
        if self.menuDlg is not None:
            sel=self.menuDlg.GetSizer().GetChildren()[0].GetWindow().\
                GetSelection()

        self.fav_num = sel
        self.menuDlg.Close()  #
        hwnds = Handle()
        if len(hwnds) > 0:
            if sel <= len(self.favList) - 1:
                PostMessage(hwnds[0], WM_COMMAND, 9217 + sel, 0)
        else:
            self.PrintError(self.text.text1)
예제 #5
0
 def __call__(self):
     hwnds = Handle()
     if len(hwnds) > 0:
         ScreamerPath = self.plugin.ScreamerPath
         xmltoparse = ScreamerPath + '\\favorites.xml'
         self.dh2 = my_xml_handler2()
         sax.parse(xmltoparse.encode(eg.systemEncoding), self.dh2)
         if eval(self.value[2]):
             self.plugin.fav_num += self.value[0]
         else:
             self.plugin.fav_num = eval(self.value[1])
         PostMessage(hwnds[0], WM_COMMAND, 9217 + self.plugin.fav_num, 0)
         num = self.plugin.fav_num
         return (str(num + 1) + ": " + self.plugin.favList[num])
     else:
         self.PrintError(self.plugin.text.text1)
         return self.plugin.text.text1
예제 #6
0
 def __call__(self,fav=1):
     hwnds = Handle()
     if len(hwnds) > 0:
         ScreamerPath = self.plugin.ScreamerPath
         xmltoparse = ScreamerPath+'\\favorites.xml'
         self.dh2 = my_xml_handler2()
         sax.parse(xmltoparse.encode(eg.systemEncoding), self.dh2)
         if fav <= len(self.plugin.favList):
             self.plugin.fav_num=fav-1
             PostMessage(hwnds[0], WM_COMMAND, 9216+fav, 0)
             return str(fav)+": "+self.plugin.favList[self.plugin.fav_num]
         else:
             self.PrintError(
                 self.text.over % (str(fav),str(len(self.plugin.favList))))
             return self.text.over % (str(fav),str(len(self.plugin.favList)))
     else:
         self.PrintError(self.plugin.text.text1)
         return self.plugin.text.text1