[已解决]设备管理器启用与禁用显卡问题
本帖最后由 styledream 于 2020-2-29 11:21 编辑#include <SetupAPI.au3>
; 禁用显卡:
Local $hDevs, $tDevInfo, $sDeviceID
$sDeviceID = "PCI\VEN_10DE&DEV_0652&SUBSYS_387A17AA&REV_A1" ; 显卡设备范例ID。
_SetupDiCreateDeviceDevs($sDeviceID, $hDevs, $tDevInfo)
$fResult = _SetupDiDisableDevice($hDevs, $tDevInfo, False) ; 启用。
If $fResult = True Then
Msgbox(0, "", "显卡禁用成功。")
Else
Msgbox(0, "", "错误码:" & @error)
EndIf
$fResult = _SetupDiDisableDevice($hDevs, $tDevInfo, True) ; 禁用
_SetupDiDestroyDeviceInfoList($hDevs) ; 销毁设备信息集。
; _CM_Disable_DevNode / _CM_Enable_DevNode 同样可以实现对硬件的禁用启用操作。
; 但_CM_Enable_DevNode不能启用设备管理器或_SetupDiDisableDevice禁用过的硬件。
我的笔记本独立显卡有些问题,每次开机后都要先启用独立显卡,再禁用来获取最佳分辨率
我参考了P版的UDF例子 http://www.autoitx.com/forum.php ... 0543&extra=page%3D1
脚本运行后返回错误代码87,好像是获取不到硬件
现求助论坛的大神们帮忙看看问题 是不是64位的问题?添加 #AutoIt3Wrapper_UseX64=n 试试 afan 发表于 2020-2-16 16:38
是不是64位的问题?添加 #AutoIt3Wrapper_UseX64=n 试试
谢谢afan版主解答
电脑系统Win10 企业版 64位
已将代码添加到脚本中,但还是提示 错误码:87
#AutoIt3Wrapper_UseX64=n
#include <SetupAPI.au3>
; 禁用显卡:
Local $hDevs, $tDevInfo, $sDeviceID
$sDeviceID = "PCI\VEN_10DE&DEV_0652&SUBSYS_387A17AA&REV_A1" ; 显卡设备范例ID。
_SetupDiCreateDeviceDevs($sDeviceID, $hDevs, $tDevInfo)
$fResult = _SetupDiDisableDevice($hDevs, $tDevInfo, False) ; 启用。
If $fResult = True Then
Msgbox(0, "", "显卡禁用成功。")
Else
Msgbox(0, "", "错误码:" & @error)
EndIf
$fResult = _SetupDiDisableDevice($hDevs, $tDevInfo, True) ; 禁用
_SetupDiDestroyDeviceInfoList($hDevs) ; 销毁设备信息集。 你搞错参数了吧。需要的是 设备范例id,不是硬件id。 在win10里面是设备实例路径。
$sDeviceID = "设备实例路径" ; 显卡设备范例ID。 4楼发哥提到的问题,并修改函数 _SetupDiOpenDeviceInfo、加上申请管理员权限#RequireAdmin
**** Hidden Message *****
zghwelcome 发表于 2020-2-16 19:52
4楼发哥提到的问题,并修改函数 _SetupDiOpenDeviceInfo、加上申请管理员权限#RequireAdmin
**** 本 ...
不光这一个函数,所有 DllStructSetData( xxxx, "Size",28)都需要修改。
但是他的代码运行在32位模式下,改不改都不影响。 haijie1223 发表于 2020-2-16 20:01
不光这一个函数,所有 DllStructSetData( xxxx, "Size",28)都需要修改。
但是他的代码运行在32位 ...
改了兼容64位解释器 haijie1223 发表于 2020-2-16 19:47
你搞错参数了吧。需要的是 设备范例id,不是硬件id。 在win10里面是设备实例路径。
$sDeviceID = "设备实 ...
感谢发哥指导,待我去试试 zghwelcome 发表于 2020-2-16 19:52
4楼发哥提到的问题,并修改函数 _SetupDiOpenDeviceInfo、加上申请管理员权限#RequireAdmin
**** 本 ...
多谢兄弟指导,要修改的内容标注得清晰明了,待我测试后反馈 这个我也想知道 zghwelcome 发表于 2020-2-16 19:52
4楼发哥提到的问题,并修改函数 _SetupDiOpenDeviceInfo、加上申请管理员权限#RequireAdmin
**** 本 ...
回复看看{:1_630:} haijie1223 发表于 2020-2-16 19:47
你搞错参数了吧。需要的是 设备范例id,不是硬件id。 在win10里面是设备实例路径。
$sDeviceID = "设备实 ...
修改成“设备实例路径”后已可成功禁用与启用显卡了
感谢发哥指导 redapple2008 发表于 2020-2-17 09:29
这个我也想知道
按照2#和4#的方法后可正常使用 zghwelcome 发表于 2020-2-16 19:52
4楼发哥提到的问题,并修改函数 _SetupDiOpenDeviceInfo、加上申请管理员权限#RequireAdmin
**** 本 ...
按照A版和发哥的方案,测试可正常禁用显卡了
P版的 SetupAPI.au3 这个UDF中包含了 LocalSecurityAuthority.au3 用于申请管理员权限
我测试过加入 #RequireAdmin,在这个UDF中不生效
styledream 发表于 2020-2-17 14:18
修改成“设备实例路径”后已可成功禁用与启用显卡了
感谢发哥指导
请修改标题
页:
[1]
2