公司DIY的会议室音视频解决方案,对于监控维度没有商业方案那么全,关于显示器连接数量和显示器状态没有做相应监控,所以借鉴了一些资料做了一个简单的会议室显示器连接数量的监控。
Demo1
# 主机显示器连接功能实现-Demo1
import json
import requests
import win32api
from win32api import GetSystemMetrics
from win32con import SM_CMONITORS
# 定义一个类
class Display_Number:
# 实例化两个变量
def __int__(self):
self.strDisplay_Detection = ''
self.strDisplay_Monitors = ''
# 这个函数是获取当前连接显示器的数量-拓展模式下
@staticmethod
def getDisplay_Detection():
MonitorNumber = GetSystemMetrics(SM_CMONITORS)
return MonitorNumber
# 这个函数是获取已连接显示器的信息:分辨率、主屏还是辅屏、Device name等-拓展模式下
@staticmethod
def getDisplay_Monitors():
monitors = win32api.EnumDisplayMonitors()
dis = win32api.GetMonitorInfo(monitors[0][0])
'''
monitor = dis.get('Monitor') # 屏幕分辨率
device = dis.get('Device')
name = dis.get('Name')
toal = monitor + device + name
'''
return dis
# 定义钉钉webhook,将上面两个函数获取到的信息推送到钉钉群
def Webhook(self):
headers = {
'Content-Type': 'application/json'} # 定义数据类型
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=' # 你个人的webhook url地址
# 定义要发送的数据
# "at": {"atMobiles": "['"+ mobile + "']"
data = {
"msgtype": "text",
"text": {
"content": '显示器连接数量:' + str(self.getDisplay_Detection()) + '\n' + '显示器信息:' + str(
self.getDisplay_Monitors())},
"isAtAll": True}
res = requests.post(webhook, data=json.dumps(data), headers=headers) # 发送post请求
print(res.text)
'''
def Display_Monitors():
a = win32.EnumDisplayDevices()
print(a)
'''
if __name__ == '__main__':
mon = Display_Number()
mon.Webhook()
Demo2
# 主机显示器连接功能实现-Demo2
import json
import requests
import wmi
w = wmi.WMI()
dis_number = []
dis_cap = []
dis_ava = []
dis_dev = []
dis_name = []
dis_sta = []
monitors = w.Win32_DesktopMonitor()
for m in monitors:
dis_number.append(m.DeviceID)
dis_cap.append(m.Caption)
dis_ava.append(str(m.Availability))
dis_dev.append(str(m.DeviceID))
dis_name.append(str(m.PNPDeviceID))
dis_sta.append(m.Status)
# print(dis_numbers)
dis_caps = '显示器类别:' + str(dis_cap)
# print(dis_caps)
dis_avas = '显示器可用状态代码:' + str(dis_ava)
# print(dis_avas)
dis_devs = '显示器设备ID:' + str(dis_dev)
# print(dis_devs)
dis_names = '外接显示器名称:' + str(dis_name)
# print(dis_names)
dis_stas = '外接显示器状态:' + str(dis_sta)
# print(dis_stas)
dis_total = str(dis_caps) + '\n' + str(dis_avas) + '\n' + str(dis_devs) + '\n' + str(
dis_names) + '\n' + str(dis_stas)
print(len(dis_number))
print(dis_total)
headers = {
'Content-Type': 'application/json'} # 定义数据类型
webhook = 'https://oapi.dingtalk.com/robot/send?access_token' # 你的webhook url地址
# 定义要发送的数据
# "at": {"atMobiles": "['"+ mobile + "']"
data = {
"msgtype": "text",
"text": {
"content": '显示器连接数量:' + str(len(dis_number)) + '\n' + str(dis_total)},
"isAtAll": True}
res = requests.post(webhook, data=json.dumps(data), headers=headers) # 发送post请求
print(res.text)