根据证书信息选择“请选择您用来签名的证书”框中的证书
# -*- coding: utf-8 -*-
import uiautomation
import time def choose_one_cert(cert_name): p_names = '' p_names_childern = '' confirm_btn = '' try: p_names = uiautomation.PaneControl(RegexName='统一认证管理平台').WindowControl( RegexName='请选择您用来签名的证书:').GetChildren() except Exception: p_names = uiautomation.PaneControl(RegexName=f'http://xxx').WindowControl( RegexName='请选择您用来签名的证书:').GetChildren() for p_name in p_names: if p_name.Name == '证书列表': p_names_childern = p_name.GetChildren() if p_name.Name == '确认(O)': confirm_btn = p_name for i, _ in enumerate(p_names_childern): if isinstance(_, uiautomation.ListItemControl) and cert_name in _.Name: time.sleep(0.1) _.SendKey(0x28) # _.Click() time.sleep(0.1) confirm_btn.SendKeys('{Alt}o') break
或
# -*- coding: UTF-8 -*- import time import autoit ''' autoitv3的python封装实现,使用pyautoit库 https://github.com/jacexh/pyautoit ''' def _select_cert(cert, up_down): flag = 0 cert_info_ui_old = '' while flag == 0: cert_info_ui = autoit.control_command("请选择您用来签名的证书:", "ListBox1", "GetCurrentSelection") print(cert_info_ui) if cert_info_ui_old == cert_info_ui: flag = 1 elif cert not in cert_info_ui: autoit.send('{' + up_down + '}') cert_info_ui_old = cert_info_ui elif cert in cert_info_ui: cert_info_ui_list = cert_info_ui.split(',') for _ in cert_info_ui_list: if cert == _.split('=')[1]: autoit.control_click("请选择您用来签名的证书:", "Button1") flag = 1 return True else: autoit.send('{' + up_down + '}') cert_info_ui_old = cert_info_ui time.sleep(0.2) def select_cert(cert): autoit.win_activate("请选择您用来签名的证书:") autoit.control_click("请选择您用来签名的证书:", "ListBox1") # 先down后up原因是,第一次down很可能不是从第一行开始查,而是从中间开始查,原因没找到。 # 所以往下找不到,就向上找,向上找可以遍历所有 if _select_cert(cert, 'DOWN'): pass elif _select_cert(cert, 'UP'): pass if __name__ == '__main__': select_cert('rsa1024')

浙公网安备 33010602011771号