我想获得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) 该功能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)
角色仍然是大写字母.之前已经问过类似的问题,但我找不到任何解决方案.
我可以使用另一种方法来改变小写吗?
我有一个编辑控件
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键.
先感谢您.
我有一个静态控件:
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)