首页 > 其他分享 >当编译器没有SetProcessDpiAwareness()这个函数时...

当编译器没有SetProcessDpiAwareness()这个函数时...

时间:2023-08-02 18:13:32浏览次数:35  
标签:... return hModule SetProcessDpiAwareness pFunc dll FreeLibrary 编译器

#include <Shlobj.h>
int setdpi()
{
    // 定义一个函数指针类型
    typedef HRESULT (WINAPI *SetProcessDpiAwarenessFunc)(int value);

    // 加载 Shcore.dll
    HMODULE hModule = LoadLibrary("Shcore.dll");
    if (hModule == NULL)
    {
        // 加载失败,处理错误
        return -1;
    }

    // 获取 SetProcessDpiAwareness 函数指针
    SetProcessDpiAwarenessFunc pFunc = (SetProcessDpiAwarenessFunc)GetProcAddress(hModule, "SetProcessDpiAwareness");
    if (pFunc == NULL)
    {
        // 获取失败,处理错误
        FreeLibrary(hModule);
        return -1;
    }

    // 调用 SetProcessDpiAwareness 函数,设置进程为感知每个监视器模式
    //注:0: DPI unaware, 1: system DPI aware, 2: per-monitor DPI aware 
    HRESULT hr = pFunc(1);
    
    if (FAILED(hr))
    {
        // 调用失败,处理错误
        FreeLibrary(hModule);
        return -1;
    }

    // 释放 Shcore.dll
    FreeLibrary(hModule);

    //返回0,表示成功 
    return 0;
}

代码原理见注释(就是动态加载dll文件,算是一个简单地应用吧)

标签:...,return,hModule,SetProcessDpiAwareness,pFunc,dll,FreeLibrary,编译器
From: https://www.cnblogs.com/cytxzgbp/p/setdpi.html

相关文章

  • 无涯教程-Lua - repeat...until 语句函数
    与for和while循环(它们在循环顶部测试循环条件)不同,Lua编程中的repeat...until循环语言在循环的底部检查其条件。repeat...until循环与while循环相似,不同之处在于,保证do...while循环至少执行一次。repeat...untilloop-语法Lua编程语言中repeat...until循......
  • 编译器、链接器和解释器
    编译器编译器的作用就是将高级编程语言翻译为机器代码。编译器工作过程一般分为:词法分析:将高级语言解析成Token集合;语法分析:将Token集合构建成语法树,在这个过程可以判断出语法是否有误,比如while后面是否{等等;语义分析:判断语法树是否有明显的语义错处,比如:string不能......
  • 【Python小随笔】Pillow简单示例(图片添字,图片覆盖图片,复杂验证码...)
     简单创建添加文字到图片fromPILimportImage,ImageDraw,ImageFont,ImageFilter#导入PIL库中的相关模块importrandom#导入random库#简单的添加文字"""mode:图片模式,指定了每个像素点的颜色组织方式。常用的模式有:'1':二值图像,每个像素点只有黑和白两种颜......
  • Unexpected exception 'Cannot run program ... error=2, No such file or directory'
    EclipseADTUnexpectedexception'Cannotrunprogram'......
  • 如果让我手写......
    字符串#include<iostream>#include<cstring>classMyString{private:char*m_data;size_tm_length;public:MyString():m_data(nullptr),m_length(0){}MyString(constchar*str){m_length=strlen(str);m_data=......
  • ...扩展运算符
     目录前言导语 代码部分 运行结果前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语歌谣歌谣......
  • pytorch-tensor属性统计(norm,max,min...)
    statistics▪norm(范数)▪mean,sum(平均值,求和)▪prod(累乘)▪max,min,argmin,argmax▪kthvalue,topk(第k大)norm(范式)这里面有一范式和二范式。一范式:\[||x||_1=\sum_k|x_k|\]二范式:\[||x||_1=\sqrt{\sum_k{x_k^2}}\]a.norm(k,dim)这个dim,可以不填,不填就是......
  • C++初始化列表时,形参和实参名可以一样,编译器可以识别
    在这里初始化列表直接用age(age)即可,用this->age(age)反而会出错,C++不允许在成员初始化列表中使用this关键字来初始化类成员classPerson{public:Person(intage):age(age){}//Initializethe'age'memberdirectlyinthememberinitializerlistinta......
  • ./...是什么?
    在Go语言的命令行中,./...是一个特殊的路径模式,它表示当前目录及其所有子目录。这个模式常常用于Go的一些命令,比如gotest,gobuild,goinstall等,以便一次性对当前目录及其所有子目录下的Go文件进行操作。例如,如果你在项目的根目录下运行gotest./...,Go会执行当前目......
  • 当使用create table ... as select建表时报错ERROR 1786
    问题描述:当使用createtable...asselect建表时报错ERROR1786.数据库:mysql5.7.211、异常重现mysql>createtablebooksbakasselect*frombooks;ERROR1786(HY000):StatementviolatesGTIDconsistency:CREATETABLE...SELECT.2、异常原因ERROR1786是由于开......