本帖最后由 醒目的我 于 2014-2-13 03:04 编辑
可以自行寻找关键字 IntelPWMControl,我顺手复制到下面了。
今天在51nb看到有人转的。刚刚运行的时候一边拿着手机照屏幕,发现确实能提高显示器的PWM频率。
笔记本是烂脑娃W520,其它品牌/型号能不能用要自行尝试。
运行的时候不需要管理员权限。
语法是后面直接跟数字作为PWM频率。比如IntelPWMControl 1000 就是设置PWM频率为1000.
- // this file is in the public domain
- #include <windows.h>
- #include <objbase.h>
- #include <stdio.h>
- #undef NDEBUG
- #include <assert.h>
- struct ICUIPower : public IUnknown
- {
- virtual HRESULT STDMETHODCALLTYPE IsSupported(LPBOOL pSupported);
- virtual HRESULT STDMETHODCALLTYPE dummy1();
- virtual HRESULT STDMETHODCALLTYPE dummy2();
- virtual HRESULT STDMETHODCALLTYPE dummy3();
- virtual HRESULT STDMETHODCALLTYPE dummy4();
- virtual HRESULT STDMETHODCALLTYPE GetPWMFrequency(LPUINT puiInverterType, LPDWORD pdwPWMFreq, LPDWORD pdwErrorCodes);
- virtual HRESULT STDMETHODCALLTYPE SetPWMFrequency(UINT uiInverterType, DWORD dwPWMFreq, LPDWORD pdwErrorCodes);
- };
- int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
- {
- int targetPWMFreq = 500;
- sscanf_s(lpCmdLine, "%d", &targetPWMFreq);
- targetPWMFreq = max(targetPWMFreq, 50);
- targetPWMFreq = min(targetPWMFreq, 1050);
- assert(SUCCEEDED(CoInitialize(0)));
- CLSID clsid = { 0xC332C124, 0x340D, 0x4430, { 0xAA, 0x0D, 0xC7, 0x56, 0x02, 0x87, 0x6F, 0xCC } };
- IID IID_ICUIPower = { 0x299D88F9, 0x2CBD, 0x4225, { 0xBF, 0x19, 0xFC, 0xD1, 0x64, 0xC5, 0x4C, 0x3F } };
- IUnknown *pUnknown;
- assert(SUCCEEDED(CoCreateInstance(clsid, 0, CLSCTX_LOCAL_SERVER, IID_IUnknown, (void**)&pUnknown)));
- ICUIPower *pCUIPower;
- assert(SUCCEEDED(pUnknown->QueryInterface(IID_ICUIPower, (void**)&pCUIPower)));
- while (1)
- {
- UINT uiInverterType = 0;
- DWORD dwPWMFreq = 0,
- dwErrorCodes = 0;
- assert(SUCCEEDED(pCUIPower->GetPWMFrequency(&uiInverterType, &dwPWMFreq, &dwErrorCodes)));
- if (dwPWMFreq != targetPWMFreq)
- {
- dwPWMFreq = targetPWMFreq;
- assert(SUCCEEDED(pCUIPower->SetPWMFrequency(uiInverterType, dwPWMFreq, &dwErrorCodes)));
- }
- Sleep(1000);
- }
- pCUIPower->Release();
- pUnknown->Release();
- CoUninitialize();
- return 0;
- }
复制代码
P.S. 为什么我半天找不到上传附件的地方…… |