c++ windows GetLastError()
时间: 2024-03-08 10:48:00 浏览: 23
`GetLastError()` 是一个 Windows API 函数,在 C++ 中用于获取最近一次发生错误的错误代码。这个函数需要在发生错误后立即调用,否则可能无法得到正确的错误代码。你可以通过以下代码使用 `GetLastError()` 函数:
```c++
#include <iostream>
#include <Windows.h>
int main() {
HANDLE hFile = CreateFile("nonexistent_file.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
DWORD error = GetLastError();
std::cout << "Error code: " << error << std::endl;
}
return 0;
}
```
这个例子展示了在尝试打开一个不存在的文件时如何使用 `GetLastError()` 函数获取错误代码。注意,在调用 `GetLastError()` 函数之前必须先发生错误,否则将得到一个不确定的错误代码。
相关问题
c++ windows x64 系统服务例子
在C语言中,编写Windows x64系统服务需要使用Windows API函数,以下是一个简单的示例:
```c
#include <windows.h>
// 服务的入口函数
DWORD WINAPI ServiceMain(LPVOID lpParam) {
// 在这里编写服务的具体逻辑
// 例如,创建一个线程来执行服务的核心功能
return 0;
}
// 服务控制处理函数
DWORD WINAPI ServiceCtrlHandler(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext) {
// 根据不同的控制指令,执行相应的操作
switch (dwControl) {
case SERVICE_CONTROL_STOP:
// 停止服务的操作
break;
case SERVICE_CONTROL_PAUSE:
// 暂停服务的操作
break;
case SERVICE_CONTROL_CONTINUE:
// 继续服务的操作
break;
default:
break;
}
return 0;
}
int main() {
// 创建服务控制管理器函数
SERVICE_TABLE_ENTRY serviceTable[] = {
{ L"MyService", ServiceMain },
{ NULL, NULL }
};
// 启动服务控制管理器
if (!StartServiceCtrlDispatcher(serviceTable)) {
// 启动失败的处理逻辑
return GetLastError();
}
return 0;
}
```
以上代码是一个简单的Windows x64服务的示例,服务的核心逻辑可以在ServiceMain函数内进行编写。在ServiceCtrlHandler函数中,可以根据控制指令执行相应的操作,例如停止、暂停或继续服务。最后,在main函数中创建服务控制管理器,将服务的名称和入口函数传递给服务控制管理器,并启动服务控制管理器。
Windows 修改本地时间 C++实现
可以使用Windows API函数`SetSystemTime()`实现修改本地时间。以下是一个示例代码:
```c++
#include <Windows.h>
int main()
{
// 以系统当前时间为基准,增加5分钟
SYSTEMTIME st;
GetLocalTime(&st);
st.wMinute += 5;
SystemTimeToFileTime(&st, (FILETIME*)&st);
// 设置系统时间
if (!SetSystemTime(&st))
{
// 设置失败
return GetLastError();
}
return 0;
}
```
注意,修改本地时间需要管理员权限。如果程序没有管理员权限,`SetSystemTime()`函数将返回错误码`ERROR_PRIVILEGE_NOT_HELD`。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)