70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
|
#!/usr/bin/env python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
"""
|
||
|
Created on 2019年5月22日
|
||
|
@author: Irony
|
||
|
@site: https://pyqt5.com https://github.com/892768447
|
||
|
@email: 892768447@qq.com
|
||
|
@file: Demo.CallVirtualKeyboard
|
||
|
@description: 调用系统虚拟键盘
|
||
|
"""
|
||
|
import glob
|
||
|
|
||
|
from PyQt5.QtCore import QProcess, QSysInfo
|
||
|
from PyQt5.QtWidgets import QWidget, QTextEdit, QVBoxLayout, QPushButton
|
||
|
|
||
|
|
||
|
__Author__ = 'Irony'
|
||
|
__Copyright__ = 'Copyright (c) 2019 Irony'
|
||
|
__Version__ = 1.0
|
||
|
|
||
|
|
||
|
class Window(QWidget):
|
||
|
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
super(Window, self).__init__(*args, **kwargs)
|
||
|
layout = QVBoxLayout(self)
|
||
|
self.resultEdit = QTextEdit(self)
|
||
|
self.resultEdit.setReadOnly(True)
|
||
|
layout.addWidget(self.resultEdit)
|
||
|
layout.addWidget(QPushButton(
|
||
|
'打开虚拟键盘', self, clicked=self._onOpenKeyboard))
|
||
|
|
||
|
def _onOpenKeyboard(self):
|
||
|
kernelType = QSysInfo.kernelType()
|
||
|
if kernelType == 'winnt':
|
||
|
try:
|
||
|
path = glob.glob(
|
||
|
r'C:\Windows\WinSxS\amd64_microsoft-windows-osk_*\osk.exe')[0]
|
||
|
ret = QProcess.startDetached(path)
|
||
|
self.resultEdit.append('start 64 osk: %s' % ret)
|
||
|
except Exception as e:
|
||
|
self.resultEdit.append('start osk error: %s' % e)
|
||
|
try:
|
||
|
# 32位程序调用64位操作系统下的程序会被重定向到SysWOW64目录
|
||
|
# 可通过`Wow64DisableWow64FsRedirection`和`Wow64RevertWow64FsRedirection`控制
|
||
|
ret = QProcess.startDetached(r'C:\Windows\system32\osk.exe')
|
||
|
self.resultEdit.append('start 32 osk: %s' % ret)
|
||
|
except Exception as e:
|
||
|
self.resultEdit.append('start osk error: %s' % e)
|
||
|
elif kernelType == 'darwin':
|
||
|
pass
|
||
|
# elif kernelType=='linux':
|
||
|
else:
|
||
|
ret = QProcess.startDetached('florence')
|
||
|
self.resultEdit.append('start florence: %s' % ret)
|
||
|
ret = QProcess.startDetached('onboard')
|
||
|
self.resultEdit.append('start onboard: %s' % ret)
|
||
|
ret = QProcess.startDetached('kvkbd')
|
||
|
self.resultEdit.append('start kvkbd: %s' % ret)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
import sys
|
||
|
from PyQt5.QtWidgets import QApplication
|
||
|
app = QApplication(sys.argv)
|
||
|
w = Window()
|
||
|
w.show()
|
||
|
sys.exit(app.exec_())
|