amd显卡没有屏幕旋转快捷键,自己写一个

本文介绍了如何在AMD显卡缺少屏幕旋转快捷键的情况下,通过编程方式解决这一问题。主要涉及Python和C++两种语言,利用WinAPI中的EnumDisplayDevices, EnumDisplaySettings和ChangeDisplaySettingsEx函数来改变屏幕显示方向,并调整逻辑分辨率以匹配屏幕。在C++实现时,注意避免中文文档翻译的误导,并确保添加消息循环以配合键盘钩子功能。" 113993008,10545980,Python循环遍历练习题详解,"['Python编程', '循环控制', '算法练习', '基础语法']
摘要由CSDN通过智能技术生成

首先上python代码


import win32api
import win32con
import time
import keyboard

def change_display_direction(angle):
    device = win32api.EnumDisplayDevices(None,0)
    dm = win32api.EnumDisplaySettings(device.DeviceName,win32con.ENUM_CURRENT_SETTINGS)
    cx = dm.PelsWidth
    cy = dm.PelsHeight

    if angle == 90:
        dm.DisplayOrientation = win32con.DMDO_90
        if cx > cy: 
            dm.PelsWidth, dm.PelsHeight = dm.PelsHeight, dm.PelsWidth
     
    if angle == 180:
        dm.DisplayOrientation = win32con.DMDO_180
        if cx < cy: 
            dm.PelsWidth, dm.PelsHeight = dm.PelsHeight, dm.PelsWidth

    if angle == 270:
        dm.DisplayOrientation = win32con.DMDO_270
        if cx > cy: 
            dm.PelsWidth, dm.PelsHeight = dm.PelsHeight, dm.PelsWidth

    if angle == 0:
        dm.DisplayOrientation = win32con.DMDO_DEFAULT
        if cx < cy: 
            dm.PelsWidth, dm.PelsHeight = dm.PelsHeight, dm.PelsWidth
    
    win32api.ChangeDisplaySettingsEx(device.DeviceName,dm)

def main():

    keyboard.add_hotkey('ctrl+alt+up', change_display_direction,args=(0,))
    keyboard.add_hotkey('ctrl+alt+left', change_display_direction,args=(90,))
    keyboard.add_hotkey('ctrl+alt+down', change_display_direction,args=(180,))
    keyboard.add_hotkey('ctrl+alt+right', change_display_direction,args=(270,))

    while(True):
        time.sleep(1)
    
    return

if __name__ == '__main__':
    main()
    

讲一下这里其中的要点:
一共三个关键函数:
EnumDisplayDevices 列出主屏幕
EnumDisplaySettings 得到当前屏幕设置
ChangeDisplaySettingsEx 修改屏幕设置

注意只修改屏幕显示方向是不够的,还要修改逻辑分辨率,不然逻辑分辨率不匹配屏幕也转不过来。


接下来用cpp试试。


在看winapi文档的时候千万别用中文,不然看下面
在这里插入图片描述
官方翻译成了
在这里插入图片描述
非常迷惑人


写完后如下

#include <cstdio>
#include <iostream>
#include <Windows.h>

using namespace std;
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )

#define myhotkey1 1018
#define myhotkey2 1019
#define myhotkey3 1020
#define myhotkey4 1021

int change_display_direction(int angle)
{
   
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值