小编Joh*_*nic的帖子

获取CPU温度

我想获得CPU温度.以下是我使用C++和WMI所做的事情.我正在读MSAcpi_ThermalZoneTemperature,但它始终是相同的,根本不是CPU温度.

有没有办法在不必编写驱动程序的情况下获得CPU的实际温度?或者我可以使用任何库吗?先感谢您.

#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <comdef.h>
#include <Wbemidl.h>

#pragma comment(lib, "wbemuuid.lib")

HRESULT GetCpuTemperature(LPLONG pTemperature)
{
        if (pTemperature == NULL)
                return E_INVALIDARG;

        *pTemperature = -1;
        HRESULT ci = CoInitialize(NULL);
        HRESULT hr = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
        if (SUCCEEDED(hr))
        {
                IWbemLocator *pLocator;
                hr = CoCreateInstance(CLSID_WbemAdministrativeLocator, NULL, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID*)&pLocator);
                if (SUCCEEDED(hr))
                {
                        IWbemServices *pServices;
                        BSTR ns = SysAllocString(L"root\\WMI");
                        hr = pLocator->ConnectServer(ns, NULL, NULL, NULL, 0, NULL, NULL, &pServices);
                        pLocator->Release();
                        SysFreeString(ns);
                        if (SUCCEEDED(hr)) …
Run Code Online (Sandbox Code Playgroud)

c++ windows cpu winapi temperature

25
推荐指数
4
解决办法
2万
查看次数

为什么towlower()功能不能将Я转换为小写я?

该功能towlower()似乎在Visual Studio 2012中不起作用.以下是一个示例:

#include <string>
#include <iostream>
#include <io.h>
#include <fcntl.h>
#include <wctype.h>

using namespace std;

int main()
{
    _setmode(_fileno(stdout), _O_U8TEXT);
    wcout << (wchar_t)towlower(L'?') << endl;
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

角色仍然是大写字母.之前已经问过类似的问题,但我找不到任何解决方案.

我可以使用另一种方法来改变小写吗?

c++ unicode locale wchar-t lowercase

8
推荐指数
2
解决办法
1519
查看次数

编辑控件捕获输入键

我有一个编辑控件

HWND hInput = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", 
    WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 
    0, 0, 100, 100, hwnd, (HMENU)IDC_MAIN_INPUT, GetModuleHandle(NULL), NULL);
Run Code Online (Sandbox Code Playgroud)

和一个按钮:

HWND hSendButton = CreateWindowEx(WS_EX_CLIENTEDGE,"BUTTON","Send!",
        BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,
        0,0,0,0,hwnd,(HMENU)IDC_MAIN_SENDBUTTON,GetModuleHandle(NULL),NULL);
Run Code Online (Sandbox Code Playgroud)

有没有办法看到在输入编辑控件时按下Enter键并发送按钮按下的消息?

我想也许吧

SendMessage(hwnd,WM_COMMAND,(WPARAM)IDC_MAIN_SENDBUTTON,LPARAM(0));
Run Code Online (Sandbox Code Playgroud)

会做发送消息的工作,但我仍然坚持捕获Enter键.

先感谢您.

c++ winapi

6
推荐指数
1
解决办法
1万
查看次数

静态控件设置文本颜色

我有一个静态控件:

HWND hLabelControl=CreateWindowEx(WS_EX_CLIENTEDGE,"STATIC","",
            WS_TABSTOP|WS_VISIBLE|WS_CHILD|SS_CENTER,0,0,24,24,
        hwnd,(HMENU)hS1,GetModuleHandle(NULL),NULL);
Run Code Online (Sandbox Code Playgroud)

我想按下按钮时静态标签中文本的颜色变为红色.

我怎样才能做到这一点?

我知道有一个

SetTextColor(
  _In_  HDC hdc,
  _In_  COLORREF crColor
);
Run Code Online (Sandbox Code Playgroud)

功能,但我无法弄清楚如何获得静态控制的HDC.

提前致谢.

编辑:

这不起作用:

        HDC hDC=GetDC(hLabelControl);
        SetTextColor(hDC,RGB(255,0,0));
Run Code Online (Sandbox Code Playgroud)

c++ winapi textcolor

5
推荐指数
1
解决办法
8177
查看次数

标签 统计

c++ ×4

winapi ×3

cpu ×1

locale ×1

lowercase ×1

temperature ×1

textcolor ×1

unicode ×1

wchar-t ×1

windows ×1