def testNotepadCN():
    consoleWindow = automation.GetConsoleWindow()
    consoleWindow.SetActive()
    automation.Logger.ColorfulWriteLine(
        '\nI will open <Color=Green>Notepad</Color> and <Color=Yellow>automate</Color> it. Please wait for a while.'
    )
    time.sleep(2)
    automation.ShowDesktop()
    #打开notepad
    subprocess.Popen('notepad')
    #查找notepad, 如果name有中文,python2中要使用Unicode
    window = automation.WindowControl(searchDepth=1,
                                      ClassName='Notepad',
                                      SubName='无标题 - 记事本')
    #可以判断window是否存在,如果不判断,找不到window的话会抛出异常
    #if window.Exists(maxSearchSeconds = 3):
    screenWidth, screenHeight = automation.Win32API.GetScreenSize()
    window.MoveWindow(screenWidth // 4, screenHeight // 4, screenWidth // 2,
                      screenHeight // 2)
    window.SetActive()
    #查找edit
    edit = automation.EditControl(
        searchFromControl=window)  #or edit = window.EditControl()
    edit.Click(waitTime=0)
    #python2中要使用Unicode, 模拟按键
    edit.SetValue('hi你好')
    edit.SendKeys('{Ctrl}{End}{Enter}下面开始演示{! 4}{ENTER}', 0.2, 0)
    edit.SendKeys(text)
    edit.SendKeys('{Enter 3}0123456789{Enter}', waitTime=0)
    edit.SendKeys('ABCDEFGHIJKLMNOPQRSTUVWXYZ{ENTER}', waitTime=0)
    edit.SendKeys('abcdefghijklmnopqrstuvwxyz{ENTER}', waitTime=0)
    edit.SendKeys('`~!@#$%^&*()-_=+{ENTER}', waitTime=0)
    edit.SendKeys('[]{{}{}}\\|;:\'\",<.>/?{ENTER}{CTRL}a')
    window.CaptureToImage('Notepad.png')
    edit.SendKeys('Image Notepad.png was captured, you will see it later.',
                  0.05)
    #查找菜单
    window.MenuItemControl(Name='格式(O)').Click()
    window.MenuItemControl(Name='字体(F)...').Click()
    windowFont = window.WindowControl(Name='字体')
    windowFont.ComboBoxControl(AutomationId='1140').Select('中文 GB2312')
    windowFont.ButtonControl(Name='确定').Click()
    window.Close()

    # buttonNotSave = ButtonControl(searchFromControl = window, SubName = '不保存')
    # buttonNotSave.Click()
    # or send alt+n to not save and quit
    # automation.SendKeys('{Alt}n')
    # 使用另一种查找方法
    buttonNotSave = automation.FindControl(
        window, lambda control: control.ControlType == automation.ControlType.
        ButtonControl and '不保存' in control.Name)
    buttonNotSave.Click()
    subprocess.Popen('Notepad.png', shell=True)
    time.sleep(2)
    consoleWindow.SetActive()
    automation.Logger.WriteLine('script exits', automation.ConsoleColor.Cyan)
    time.sleep(2)
def main():
    consoleWindow = automation.GetConsoleWindow()
    print(consoleWindow)
    print('\nconsole window will be hidden in 3 seconds')
    time.sleep(3)
    consoleWindow.Hide()
    time.sleep(2)
    print('\nconsole window shows again')
    consoleWindow.Show()
def testNotepadEN():
    consoleWindow = automation.GetConsoleWindow()
    consoleWindow.SetActive()
    automation.Logger.ColorfulWriteLine(
        '\nI will open <Color=Green>Notepad</Color> and <Color=Yellow>automate</Color> it. Please wait for a while.'
    )
    time.sleep(2)
    automation.ShowDesktop()
    subprocess.Popen('notepad')
    #search notepad window, if searchFromControl is None, search from RootControl
    #searchDepth = 1 makes searching faster, only searches RootControl's children, not children's children
    window = automation.WindowControl(searchDepth=1,
                                      ClassName='Notepad',
                                      SubName='Untitled - Notepad')
    #if window.Exists(maxSearchSeconds = 3): #check before using it
    #pass
    screenWidth, screenHeight = automation.Win32API.GetScreenSize()
    window.MoveWindow(screenWidth // 4, screenHeight // 4, screenWidth // 2,
                      screenHeight // 2)
    window.SetActive()
    edit = automation.EditControl(
        searchFromControl=window)  #or edit = window.EditControl()
    edit.Click(waitTime=0)
    edit.SetValue('hi你好')
    edit.SendKeys('{Ctrl}{End}{Enter}下面开始演示{! 4}{ENTER}', 0.2, 0)
    edit.SendKeys(text)
    edit.SendKeys('{Enter 3}0123456789{Enter}', waitTime=0)
    edit.SendKeys('ABCDEFGHIJKLMNOPQRSTUVWXYZ{Enter}', waitTime=0)
    edit.SendKeys('abcdefghijklmnopqrstuvwxyz{Enter}', waitTime=0)
    edit.SendKeys('`~!@#$%^&*()-_=+{Enter}', waitTime=0)
    edit.SendKeys('[]{{}{}}\\|;:\'\",<.>/?{Enter}{Ctrl}a')
    window.CaptureToImage('Notepad.png')
    edit.SendKeys('Image Notepad.png was captured, you will see it later.',
                  0.05)
    #find menu
    window.MenuItemControl(Name='Format').Click()
    window.MenuItemControl(Name='Font...').Click()
    windowFont = window.WindowControl(Name='Font')
    windowFont.ComboBoxControl(AutomationId='1140').Select('Western')
    windowFont.ButtonControl(Name='OK').Click()
    window.Close()

    # buttonNotSave = ButtonControl(searchFromControl = window, Name = 'Don\'t Save')
    # buttonNotSave.Click()
    # or send alt+n to not save and quit
    # automation.SendKeys('{Alt}n')
    # another way to find the button using lambda
    buttonNotSave = automation.FindControl(
        window, lambda control: control.ControlType == automation.ControlType.
        ButtonControl and 'Don\'t Save' == control.Name)
    buttonNotSave.Click()
    subprocess.Popen('Notepad.png', shell=True)
    time.sleep(2)
    consoleWindow.SetActive()
    automation.Logger.WriteLine('script exits', automation.ConsoleColor.Cyan)
    time.sleep(2)
Ejemplo n.º 4
0
def main():
    firefoxWindow = automation.WindowControl(searchDepth=1,
                                             ClassName='MozillaWindowClass')
    if not firefoxWindow.Exists(0):
        automation.Logger.WriteLine('please run Firefox first',
                                    automation.ConsoleColor.Yellow)
        return
    firefoxWindow.ShowWindow(automation.ShowWindow.Maximize)
    firefoxWindow.SetActive()
    time.sleep(1)
    tab = automation.TabControl(searchFromControl=firefoxWindow)
    newTabButton = automation.ButtonControl(searchFromControl=tab,
                                            searchDepth=1)
    newTabButton.Click()
    edit = automation.EditControl(searchFromControl=firefoxWindow)
    edit.Click()
    automation.SendKeys(
        'http://global.bing.com/?rb=0&setmkt=en-us&setlang=en-us{Enter}')
    time.sleep(2)
    searchEdit = automation.FindControl(
        firefoxWindow, lambda c: (isinstance(c, automation.EditControl) or
                                  isinstance(c, automation.ComboBoxControl))
        and c.Name == 'Enter your search term')
    searchEdit.Click()
    automation.SendKeys(
        'Python-UIAutomation-for-Windows site:github.com{Enter}', 0.05)
    link = automation.HyperlinkControl(
        searchFromControl=firefoxWindow,
        SubName='yinkaisheng/Python-UIAutomation-for-Windows')
    automation.Win32API.PressKey(automation.Keys.VK_CONTROL)
    link.Click()  #press control to open the page in a new tab
    automation.Win32API.ReleaseKey(automation.Keys.VK_CONTROL)
    newTab = automation.TabItemControl(
        searchFromControl=tab,
        SubName='yinkaisheng/Python-UIAutomation-for-Windows')
    newTab.Click()
    starButton = automation.ButtonControl(searchFromControl=firefoxWindow,
                                          Name='Star this repository')
    if starButton.Exists(5):
        automation.GetConsoleWindow().SetActive()
        automation.Logger.WriteLine(
            'Star Python-UIAutomation-for-Windows after 2 seconds',
            automation.ConsoleColor.Yellow)
        time.sleep(2)
        firefoxWindow.SetActive()
        time.sleep(1)
        starButton.Click()
        time.sleep(2)
Ejemplo n.º 5
0
def main():
    print('请把鼠标放在QQ群聊天窗口中的一个成员上面,3秒后获取\n')
    time.sleep(3)
    listItem = automation.ControlFromCursor()
    if listItem.ControlType != automation.ControlType.ListItemControl:
        print('没有放在群成员上面,程序退出!')
        return
    consoleWindow = automation.GetConsoleWindow()
    consoleWindow.SetActive()
    qqWindow = listItem.GetTopWindow()
    list = listItem.GetParentControl()
    allListItems = list.GetChildren()
    for listItem in allListItems:
        automation.Logger.WriteLine(listItem.Name)
    answer = input('是否获取详细信息?按y和Enter继续\n')
    if answer.lower() == 'y':
        print('\n3秒后开始获取QQ群成员详细资料,您可以一直按住F10键暂停脚本')
        time.sleep(3)
        qqWindow.SetActive()
        time.sleep(0.5)
        #确保群里第一个成员可见在最上面
        left, top, right, bottom = list.BoundingRectangle
        while allListItems[0].BoundingRectangle[1] < top:
            automation.Win32API.MouseClick(right - 5, top + 20)
            time.sleep(0.5)
        for listItem in allListItems:
            if listItem.ControlType == automation.ControlType.ListItemControl:
                if automation.Win32API.IsKeyPressed(automation.Keys.VK_F10):
                    consoleWindow.SetActive()
                    input('\n您暂停了脚本,按Enter继续\n')
                    qqWindow.SetActive()
                    time.sleep(0.5)
                listItem.RightClick()
                menu = automation.MenuControl(searchDepth=1,
                                              ClassName='TXGuiFoundation')
                menuItems = menu.GetChildren()
                for menuItem in menuItems:
                    if menuItem.Name == '查看资料':
                        menuItem.Click()
                        break
                automation.Logger.WriteLine(listItem.Name,
                                            automation.ConsoleColor.Green)
                automation.Logger.WriteLine(GetPersonDetail())
                listItem.Click()
                time.sleep(0.5)
                automation.SendKeys('{Down}')
                time.sleep(0.5)
Ejemplo n.º 6
0
    automation.SendKeys(
        'Python-UIAutomation-for-Windows site:github.com{Enter}', 0.05)
    link = automation.HyperlinkControl(
        searchFromControl=firefoxWindow,
        SubName='yinkaisheng/Python-UIAutomation-for-Windows')
    automation.Win32API.PressKey(automation.Keys.VK_CONTROL)
    link.Click()  #press control to open the page in a new tab
    automation.Win32API.ReleaseKey(automation.Keys.VK_CONTROL)
    newTab = automation.TabItemControl(
        searchFromControl=tab,
        SubName='yinkaisheng/Python-UIAutomation-for-Windows')
    newTab.Click()
    starButton = automation.ButtonControl(searchFromControl=firefoxWindow,
                                          Name='Star this repository')
    if starButton.Exists(5):
        automation.GetConsoleWindow().SetActive()
        automation.Logger.WriteLine(
            'Star Python-UIAutomation-for-Windows after 2 seconds',
            automation.ConsoleColor.Yellow)
        time.sleep(2)
        firefoxWindow.SetActive()
        time.sleep(1)
        starButton.Click()
        time.sleep(2)


if __name__ == '__main__':
    main()
    automation.GetConsoleWindow().SetActive()
    input('press Enter to exit')
                        type=int,
                        dest='sampleRate',
                        default=0,
                        help='sample rate')
    parser.add_argument('-b',
                        '--begin',
                        type=int,
                        dest='beginNo',
                        default=0,
                        help='begin no')
    parser.add_argument('-n',
                        '--num',
                        type=int,
                        dest='maxPacket',
                        default=0xFFFFFFFF,
                        help='read packets count')
    parser.add_argument('-l',
                        '--lost',
                        type=bool,
                        dest='calculateLost',
                        default=False,
                        help='calculate lost packets')
    args = parser.parse_args()
    cmdWindow = automation.GetConsoleWindow()
    cmdWindow.SetTopmost()
    if 0 == args.sampleRate:
        args.sampleRate = int(input('please input sample rate: '))
    Analyze(args.sampleRate, args.beginNo, args.maxPacket, args.calculateLost)
    cmdWindow.SetActive()
    input('press enter to exit')
Ejemplo n.º 8
0
def main():

    # mainWindow=automation.WindowControl(searchDepth=1, ClassName='TXGuiFoundation',Name='');
    # mainWindow.ShowWindow(automation.ShowWindow.Maximize)
    # mainWindow.SetActive()
    # # 群聊按钮
    # groupBtn=automation.ButtonControl(searchFromControl=mainWindow);
    #
    #
    #
    # # groupBtn=automation.FindControl(searchFromControl=mainWindow);
    #
    # groupsControl=automation.ListItemControl(searchFromControl=mainWindow,Name='我的QQ群')
    # containControl=groupsControl.GetNextSiblingControl();
    # groupItems=automation.PaneControl.GetChildren(containControl);
    # for grop in groupItems:
    #     automation.ListItemControl.RightClick(grop)
    #     automation.SendKey("{Down}");
    #     print(grop)
    #     time.sleep(5)
    # return




    qqWindow = automation.WindowControl(searchDepth=1, ClassName='TXGuiFoundation')
    if not qqWindow.Exists(0):
        automation.Logger.WriteLine('please run QQ first', automation.ConsoleColor.Yellow)
        return
    qqWindow.ShowWindow(automation.ShowWindow.Maximize)
    qqWindow.SetActive()
    time.sleep(1)

    # 群聊窗口输入框
    # edit = automation.EditControl(searchFromControl=qqWindow, Name='输入')
    # if !edit
    #     print('没有找到对应的群输入框')
    #     return
    # edit.Click()
    # automation.SendKeys('有人在吗? {Enter}')
    # automation.SendKeys("{Ctrl}{Enter}")
    # time.sleep(2)

    listControl = automation.ListControl(searchFromControl=qqWindow, Name='')
    listItem = listControl.GetChildren()
    # 确保群里第一个成员可见在最上面
    left, top, right, bottom = listControl.BoundingRectangle
    while listItem[0].BoundingRectangle[1] < top:
        automation.Win32API.MouseClick(right - 5, top + 5)
    for item in listItem:
        if '管理员' in item.Name or '群主' in item.Name:
            item.Click()
            time.sleep(0.5)
            automation.SendKeys('{Down}')
            continue;
        item.RightClick()
        itemName = item.Name
        print(item)
        menu = automation.MenuControl(searchDepth=1, ClassName='TXGuiFoundation')
        menuItems = menu.GetChildren()
        for menuItem in menuItems:
            if menuItem.Name == '发送消息':
                menuItem.Click()
                time.sleep(0.5)
                currentTalkWin = automation.WindowControl(searchDepth=1, ClassName='TXGuiFoundation')
                currentTalkWin.SetActive()
                # time.sleep(0.5)
                edit = automation.EditControl(searchFromControl=currentTalkWin, Name='输入')
                edit.Click()
                text = '''
【皮尔卡丹】家纺纯棉四件套 法式情调家纺{Enter}
【天猫89元】【23花色入】【送运险费】{Enter}
优惠券:https://shop.m.taobao.com/shop/coupon.htm?sellerId=2369408650&activityId=a5304665cb824928a35d81b73cfaa20b{Enter}
抢购链接:http://yqt.so/Re49Td{Enter}
【法国大牌】{Enter}
                '''
                automation.SendKeys(text+' {Enter}')
                automation.SendKeys("{Alt}{F4}")
                break
        item.Click()
        time.sleep(0.5)
        automation.SendKeys('{Down}')
        time.sleep(0.5)
    return

    searchEdit = automation.FindControl(qqWindow,
                                        lambda c:
                                        (isinstance(c, automation.EditControl) or isinstance(c,
                                                                                             automation.ComboBoxControl)) and c.Name == 'Enter your search term'
                                        )
    searchEdit.Click()
    automation.SendKeys('Python-UIAutomation-for-Windows site:github.com{Enter}', 0.05)
    link = automation.HyperlinkControl(searchFromControl=qqWindow,
                                       SubName='yinkaisheng/Python-UIAutomation-for-Windows')
    automation.Win32API.PressKey(automation.Keys.VK_CONTROL)
    link.Click()  # press control to open the page in a new tab
    automation.Win32API.ReleaseKey(automation.Keys.VK_CONTROL)
    newTab = automation.TabItemControl(searchFromControl=tab, SubName='yinkaisheng/Python-UIAutomation-for-Windows')
    newTab.Click()
    starButton = automation.ButtonControl(searchFromControl=qqWindow, Name='Star this repository')
    if starButton.Exists(5):
        automation.GetConsoleWindow().SetActive()
        automation.Logger.WriteLine('Star Python-UIAutomation-for-Windows after 2 seconds',
                                    automation.ConsoleColor.Yellow)
        time.sleep(2)
        qqWindow.SetActive()
        time.sleep(1)
        starButton.Click()
        time.sleep(2)
Ejemplo n.º 9
0
def DemoCN():
    '''for Chinese language'''
    thisWindow = automation.GetConsoleWindow()
    automation.Logger.ColorfulWrite(
        '我将运行<Color=Cyan>cmd</Color>并设置它的<Color=Cyan>屏幕缓冲区</Color>使<Color=Cyan>cmd</Color>一行能容纳很多字符\n\n'
    )
    time.sleep(3)

    automation.SendKeys('{Win}r')
    while not isinstance(automation.GetFocusedControl(),
                         automation.EditControl):
        time.sleep(1)
    automation.SendKeys('cmd{Enter}')
    cmdWindow = automation.WindowControl(SubName='cmd.exe')
    cmdWindow.TitleBarControl().RightClick()
    automation.SendKey(automation.Keys.VK_P)
    optionWindow = cmdWindow.WindowControl(SubName='属性')
    optionWindow.TabItemControl(SubName='选项').Click()
    optionTab = optionWindow.PaneControl(SubName='选项')
    checkBox = optionTab.CheckBoxControl(AutomationId='103')
    while checkBox.CurrentToggleState() != automation.ToggleState.On:
        checkBox.Click()
    checkBox = optionTab.CheckBoxControl(AutomationId='104')
    while checkBox.CurrentToggleState() != automation.ToggleState.On:
        checkBox.Click()
    optionWindow.TabItemControl(SubName='布局').Click()
    layoutTab = optionWindow.PaneControl(SubName='布局')
    layoutTab.EditControl(AutomationId='301').SetValue('300')
    layoutTab.EditControl(AutomationId='303').SetValue('3000')
    layoutTab.EditControl(AutomationId='305').SetValue('140')
    layoutTab.EditControl(AutomationId='307').SetValue('30')
    optionWindow.ButtonControl(AutomationId='1').Click()
    cmdWindow.SetActive()
    l, t, r, b = cmdWindow.BoundingRectangle
    automation.Win32API.MouseDragTo(l + 50, t + 10, 50, 10)

    thisWindow.SetActive()
    automation.Logger.ColorfulWrite(
        '我将运行<Color=Cyan>记事本</Color>并输入<Color=Cyan>你好!!!</Color>\n\n')
    time.sleep(2)

    subprocess.Popen('notepad')
    notepadWindow = automation.WindowControl(searchDepth=1,
                                             ClassName='Notepad')
    cx, cy = automation.Win32API.GetScreenSize()
    notepadWindow.MoveWindow(cx // 2, 0, cx // 2, cy // 2)
    time.sleep(0.5)
    notepadWindow.EditControl().SendKeys('Hello!!!', 0.05)
    time.sleep(1)

    dir = os.path.dirname(__file__)
    scriptPath = os.path.join(dir, 'automation.py')

    thisWindow.SetActive()
    automation.Logger.ColorfulWrite(
        '运行"<Color=Cyan>automation.py -h</Color>"显示帮助\n\n')
    time.sleep(2)

    cmdWindow.SendKeys('"{}" -h'.format(scriptPath) + '{Enter}', 0.05)
    time.sleep(3)

    thisWindow.SetActive()
    automation.Logger.ColorfulWrite(
        '运行"<Color=Cyan>automation.py -r -d1</Color>"显示所有顶层窗口, 即桌面的子窗口\n\n')
    time.sleep(2)

    cmdWindow.SendKeys('"{}" -r -d1 -t0'.format(scriptPath) + '{Enter}', 0.05)
    time.sleep(3)

    thisWindow.SetActive()
    automation.Logger.ColorfulWrite(
        '运行"<Color=Cyan>automation.py -c</Color>"显示鼠标光标下的控件, 鼠标即将移动到记事本上\n\n')
    time.sleep(2)

    cmdWindow.SendKeys('"{}" -c -t3'.format(scriptPath) + '{Enter}', 0.05)
    notepadWindow.SetActive()
    notepadWindow.MoveCursorToMyCenter()
    time.sleep(3)
    cmdWindow.SetActive(waitTime=2)

    thisWindow.SetActive()
    automation.Logger.ColorfulWrite(
        '运行"<Color=Cyan>automation.py -a</Color>"显示鼠标光标下的控件和它的所有父控件\n\n')
    time.sleep(2)

    cmdWindow.SendKeys('"{}" -a -t3'.format(scriptPath) + '{Enter}', 0.05)
    notepadWindow.SetActive()
    notepadWindow.MoveCursorToMyCenter()
    time.sleep(3)
    cmdWindow.SetActive(waitTime=2)

    thisWindow.SetActive()
    automation.Logger.ColorfulWrite(
        '运行"<Color=Cyan>automation.py</Color>"显示当前激活窗口和它的所有子控件\n\n')
    time.sleep(2)

    cmdWindow.SendKeys('"{}" -t3'.format(scriptPath) + '{Enter}', 0.05)
    notepadWindow.SetActive()
    notepadWindow.EditControl().Click()
    time.sleep(3)
    cmdWindow.SetActive(waitTime=2)
    time.sleep(3)

    thisWindow.SetActive()
    automation.Logger.WriteLine('演示结束,按Enter退出', automation.ConsoleColor.Cyan)
    input()
Ejemplo n.º 10
0
def DemoEN():
    '''for other language'''
    thisWindow = automation.GetConsoleWindow()
    automation.Logger.ColorfulWrite('I will run <Color=Cyan>cmd</Color>\n\n')
    time.sleep(3)

    automation.SendKeys('{Win}r')
    while not isinstance(automation.GetFocusedControl(),
                         automation.EditControl):
        time.sleep(1)
    automation.SendKeys('cmd{Enter}')
    cmdWindow = automation.WindowControl(SubName='cmd.exe')
    l, t, r, b = cmdWindow.BoundingRectangle
    automation.Win32API.MouseDragTo(l + 50, t + 10, 50, 10)

    thisWindow.SetActive()
    automation.Logger.ColorfulWrite(
        'I will run <Color=Cyan>Notepad</Color> and type <Color=Cyan>Hello!!!</Color>\n\n'
    )
    time.sleep(3)

    subprocess.Popen('notepad')
    notepadWindow = automation.WindowControl(searchDepth=1,
                                             ClassName='Notepad')
    cx, cy = automation.Win32API.GetScreenSize()
    notepadWindow.MoveWindow(cx // 2, 0, cx // 2, cy // 2)
    time.sleep(0.5)
    notepadWindow.EditControl().SendKeys('Hello!!!', 0.05)
    time.sleep(1)

    dir = os.path.dirname(__file__)
    scriptPath = os.path.join(dir, 'automation.py')

    thisWindow.SetActive()
    automation.Logger.ColorfulWrite(
        'run "<Color=Cyan>automation.py -h</Color>" to display the help\n\n')
    time.sleep(3)

    cmdWindow.SendKeys('"{}" -h'.format(scriptPath) + '{Enter}', 0.05)
    time.sleep(3)

    thisWindow.SetActive()
    automation.Logger.ColorfulWrite(
        'run "<Color=Cyan>automation.py -r -d1</Color>" to display the top level windows, desktop\'s children\n\n'
    )
    time.sleep(3)

    cmdWindow.SendKeys('"{}" -r -d1 -t0'.format(scriptPath) + '{Enter}', 0.05)
    time.sleep(3)

    thisWindow.SetActive()
    automation.Logger.ColorfulWrite(
        'run "<Color=Cyan>automation.py -c</Color>" to display the control under mouse cursor\n\n'
    )
    time.sleep(3)

    cmdWindow.SendKeys('"{}" -c -t3'.format(scriptPath) + '{Enter}', 0.05)
    notepadWindow.SetActive()
    notepadWindow.MoveCursorToMyCenter()
    time.sleep(3)
    cmdWindow.SetActive(waitTime=2)

    thisWindow.SetActive()
    automation.Logger.ColorfulWrite(
        'run "<Color=Cyan>automation.py -a</Color>" to display the control under mouse cursor and its ancestors\n\n'
    )
    time.sleep(3)

    cmdWindow.SendKeys('"{}" -a -t3'.format(scriptPath) + '{Enter}', 0.05)
    notepadWindow.SetActive()
    notepadWindow.MoveCursorToMyCenter()
    time.sleep(3)
    cmdWindow.SetActive(waitTime=2)

    thisWindow.SetActive()
    automation.Logger.ColorfulWrite(
        'run "<Color=Cyan>automation.py</Color>" to display the active window\n\n'
    )
    time.sleep(3)

    cmdWindow.SendKeys('"{}" -t3'.format(scriptPath) + '{Enter}', 0.05)
    notepadWindow.SetActive()
    notepadWindow.EditControl().Click()
    time.sleep(3)
    cmdWindow.SetActive(waitTime=2)
    time.sleep(3)

    thisWindow.SetActive()
    automation.Logger.WriteLine('press Enter to exit',
                                automation.ConsoleColor.Green)
    input()
Ejemplo n.º 11
0
Archivo: App.py Proyecto: peisheng/test
def main():
    qqWindow = automation.WindowControl(searchDepth=1,
                                        ClassName='TXGuiFoundation',
                                        title='净网大师官方PC群1')
    if not qqWindow.Exists(0):
        automation.Logger.WriteLine('please run QQ first',
                                    automation.ConsoleColor.Yellow)
        return
    qqWindow.ShowWindow(automation.ShowWindow.Maximize)
    qqWindow.SetActive()
    time.sleep(1)

    # 群聊窗口输入框
    # edit = automation.EditControl(searchFromControl=qqWindow, Name='输入')
    # if !edit
    #     print('没有找到对应的群输入框')
    #     return
    # edit.Click()
    # automation.SendKeys('有人在吗? {Enter}')
    # automation.SendKeys("{Ctrl}{Enter}")
    # time.sleep(2)

    listControl = automation.ListControl(searchFromControl=qqWindow, Name='')
    listItem = listControl.GetChildren()
    # 确保群里第一个成员可见在最上面
    left, top, right, bottom = listControl.BoundingRectangle
    while listItem[0].BoundingRectangle[1] < top:
        automation.Win32API.MouseClick(right - 5, top + 5)
    for item in listItem:
        item.RightClick()
        itemName = item.Name
        print(item)
        menu = automation.MenuControl(searchDepth=1,
                                      ClassName='TXGuiFoundation')
        menuItems = menu.GetChildren()
        for menuItem in menuItems:
            if menuItem.Name == '发送消息':
                menuItem.Click()
                time.sleep(0.5)
                currentTalkWin = automation.WindowControl(
                    searchDepth=1, ClassName='TXGuiFoundation')
                # currentTalkWin.ShowWindow(automation.ShowWindow.Maximize)
                currentTalkWin.SetActive()
                time.sleep(0.5)
                edit = automation.EditControl(searchFromControl=currentTalkWin,
                                              Name='输入')
                edit.Click()
                automation.SendKeys('有人在吗? {Enter}')
                automation.SendKeys("{Alt}{F4}")
                # automation.SendKey("{Ctrl}{Enter}")
                # automation.SendKey("{Alt}{F4}")
                break
        item.Click()
        time.sleep(0.5)
        automation.SendKeys('{Down}')
        time.sleep(0.5)
    return

    searchEdit = automation.FindControl(
        qqWindow, lambda c: (isinstance(c, automation.EditControl) or
                             isinstance(c, automation.ComboBoxControl)) and c.
        Name == 'Enter your search term')
    searchEdit.Click()
    automation.SendKeys(
        'Python-UIAutomation-for-Windows site:github.com{Enter}', 0.05)
    link = automation.HyperlinkControl(
        searchFromControl=qqWindow,
        SubName='yinkaisheng/Python-UIAutomation-for-Windows')
    automation.Win32API.PressKey(automation.Keys.VK_CONTROL)
    link.Click()  # press control to open the page in a new tab
    automation.Win32API.ReleaseKey(automation.Keys.VK_CONTROL)
    newTab = automation.TabItemControl(
        searchFromControl=tab,
        SubName='yinkaisheng/Python-UIAutomation-for-Windows')
    newTab.Click()
    starButton = automation.ButtonControl(searchFromControl=qqWindow,
                                          Name='Star this repository')
    if starButton.Exists(5):
        automation.GetConsoleWindow().SetActive()
        automation.Logger.WriteLine(
            'Star Python-UIAutomation-for-Windows after 2 seconds',
            automation.ConsoleColor.Yellow)
        time.sleep(2)
        qqWindow.SetActive()
        time.sleep(1)
        starButton.Click()
        time.sleep(2)