全部产品
云市场

部分银行密码输入框无法输入解决办法

更新时间:2019-09-18 15:38:46

  1. 管理员权限运行命令命令提示符(cmd)。
  2. 执行下面两个代码。
  1. # 打开测试模式
  2. bcdedit.exe /set TESTSIGNING ON
  3. # 打开禁用系统驱动程序强制签名
  4. bcdedit.exe /set nointegritychecks on
  1. 重启电脑。
  2. 以管理员权限运行rpa
  3. 将下列代码封装成自定义sdk。
  1. from rpa.core import *
  2. from rpa.utils import *
  3. import rpa3 as rpa # 使用V3引擎
  4. import pywinio
  5. import time
  6. import atexit
  7. # KeyBoard Commands
  8. # Command port
  9. KBC_KEY_CMD = 0x64
  10. # Data port
  11. KBC_KEY_DATA = 0x60
  12. g_winio = None
  13. WordDict = {'a': 0x1e, 'b': 0x30, 'c': 0x2e, 'd': 0x20, 'e': 0x12, 'f': 0x21,
  14. 'g': 0x22, 'h': 0x23, 'i': 0x17, 'j': 0x24, 'k': 0x25, 'l': 0x26,
  15. 'm': 0x32, 'n': 0x31, 'o': 0x18, 'p': 0x19, 'q': 0x10, 'r': 0x13,
  16. 's': 0x1f, 't': 0x14, 'u': 0x16, 'v': 0x2f, 'w': 0x11, 'x': 0x2d,
  17. 'y': 0x15, 'z': 0x2c, '0': 0x0b, '1': 0x02, '2': 0x03, '3': 0x04,
  18. '4': 0x05, '5': 0x06, '6': 0x07, '7': 0x08, '8': 0x09, '9': 0x0a,
  19. '!': 0x02, '"': 0x28, '#': 0x04, '$': 0x05, '%': 0x06, '&': 0x08,
  20. '\'':0x28, '(': 0x0a, ')': 0x0b, '*': 0x09, '+': 0x0d, ',': 0x33,
  21. '-': 0x0c, '.': 0x34, '/': 0x35, ':': 0x27, ';': 0x27, '<': 0x33,
  22. '=': 0x0d, '>': 0x34, '?': 0x35, '@': 0x03, '[': 0x1a, '\\':'0x2',
  23. ']': 0x1b, '^': 0x07, '_': 0x0c, '`': 0x29, '{': 0x1a, '|': 0x2b,
  24. '}': 0x1b, '~': 0x29, 'caps_lock': 0x3A}
  25. def get_winio():
  26. global g_winio
  27. if g_winio is None:
  28. g_winio = pywinio.WinIO()
  29. def __clear_winio():
  30. global g_winio
  31. g_winio = None
  32. atexit.register(__clear_winio)
  33. return g_winio
  34. def wait_for_buffer_empty():
  35. '''
  36. Wait keyboard buffer empty
  37. '''
  38. winio = get_winio()
  39. dwRegVal = 0x02
  40. while (dwRegVal & 0x02):
  41. dwRegVal = winio.get_port_byte(KBC_KEY_CMD)
  42. def key_down(scancode):
  43. winio = get_winio()
  44. wait_for_buffer_empty();
  45. winio.set_port_byte(KBC_KEY_CMD, 0xd2);
  46. wait_for_buffer_empty();
  47. winio.set_port_byte(KBC_KEY_DATA, scancode)
  48. def key_up(scancode):
  49. winio = get_winio()
  50. wait_for_buffer_empty();
  51. winio.set_port_byte( KBC_KEY_CMD, 0xd2);
  52. wait_for_buffer_empty();
  53. winio.set_port_byte( KBC_KEY_DATA, scancode | 0x80);
  54. def key_press(scancode, press_time = 0.2):
  55. key_down( scancode )
  56. time.sleep( press_time )
  57. key_up( scancode )
  58. def pwd_input(pwd):
  59. for i in pwd:
  60. key_press(WordDict.get(i))

调用方法

点击密码控件保证光标在密码框内部

  1. def star3():
  2. rpa.ie.closeall()
  3. page = rpa.ie.create("")
  4. # 点击密码控件保证光标在密码框内部
  5. wnd.click('密码控件', button='left', simulate=True, index=1, offsetX=0, offsetY=0)
  6. # 调用sdk方法,放入密码
  7. pwd_input("qwe123")

pywinio.zip

报错解决

" class="reference-link">image.png

此报错信息
1.未用管理员权限运行RPA。
2.未重启电脑。

重复上面步骤。

关闭测试模式执行命令

  1. # 关闭测试模式
  2. bcdedit.exe /set TESTSIGNING OFF
  3. # 关闭禁用系统驱动程序强制签名
  4. bcdedit.exe /set nointegritychecks off