window C++获取当前运行目录代码例子
时间: 2023-12-02 16:03:13 浏览: 34
以下是一个获取当前运行目录的 C++ 代码例子:
```c++
#include <iostream>
#include <windows.h>
int main() {
char buffer[MAX_PATH];
GetCurrentDirectory(MAX_PATH, buffer);
std::cout << "Current directory: " << buffer << std::endl;
return 0;
}
```
该程序使用了 Windows API 中的 GetCurrentDirectory 函数,该函数的第一个参数是缓冲区的大小,第二个参数则是用于存储当前运行目录的字符数组。如果函数成功执行,它将返回当前运行目录的长度,否则返回 0。在上述代码中,我们将当前运行目录输出到控制台。
相关问题
c++ window 如何获取当前执行程序的创建时间
您可以使用 `GetFileTime` 函数来获取当前执行程序的创建时间。以下是一个示例代码:
```cpp
#include <iostream>
#include <windows.h>
int main() {
// 获取当前执行程序的路径
char path[MAX_PATH];
GetModuleFileName(NULL, path, MAX_PATH);
// 获取文件的创建时间
FILETIME createTime;
HANDLE fileHandle = CreateFile(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (fileHandle != INVALID_HANDLE_VALUE) {
if (GetFileTime(fileHandle, &createTime, NULL, NULL)) {
// 将文件时间转换为本地时间
SYSTEMTIME localTime;
FileTimeToSystemTime(&createTime, &localTime);
// 输出创建时间
std::cout << "创建时间:" << localTime.wYear << "-" << localTime.wMonth << "-" << localTime.wDay << " "
<< localTime.wHour << ":" << localTime.wMinute << ":" << localTime.wSecond << std::endl;
}
CloseHandle(fileHandle);
}
return 0;
}
```
请注意,上述代码使用了 Windows API 函数,因此仅适用于 Windows 操作系统。在 `GetFileTime` 函数中,我们通过指定 `CREATE_FILE_ACCESS` 属性为 `GENERIC_READ` 来获取文件的读取权限。然后,我们使用 `GetModuleFileName` 函数获取当前执行程序的路径,并调用 `CreateFile` 函数打开该文件。最后,我们调用 `FileTimeToSystemTime` 函数将文件时间转换为本地时间,并输出创建时间。
希望对您有所帮助!如有其他问题,请随时提问。
window c++如何获取共享内存中的内容
在 Windows 的 C++ 编程中,要获取共享内存中的内容,可以使用以下步骤:
1. 使用 `CreateFileMapping` 函数创建一个共享内存对象,该函数返回一个句柄。
2. 使用 `MapViewOfFile` 函数将共享内存对象映射到当前进程的地址空间中,该函数返回一个指向共享内存区域的指针。
3. 通过指针读取或写入共享内存中的数据。
4. 使用 `UnmapViewOfFile` 函数取消共享内存区域的映射。
5. 使用 `CloseHandle` 函数关闭共享内存对象句柄。
以下是一个简单的示例代码:
```c++
#include <Windows.h>
#include <iostream>
int main()
{
// 创建一个共享内存对象
HANDLE hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 1024, L"MySharedMemory");
if (hMapFile == NULL)
{
std::cout << "CreateFileMapping failed, error: " << GetLastError() << std::endl;
return 1;
}
// 将共享内存区域映射到当前进程的地址空间中
LPVOID lpMapAddress = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 1024);
if (lpMapAddress == NULL)
{
std::cout << "MapViewOfFile failed, error: " << GetLastError() << std::endl;
CloseHandle(hMapFile);
return 1;
}
// 读取共享内存中的数据
char* pData = (char*)lpMapAddress;
std::cout << "Data in shared memory: " << pData << std::endl;
// 取消共享内存区域的映射
UnmapViewOfFile(lpMapAddress);
// 关闭共享内存对象句柄
CloseHandle(hMapFile);
return 0;
}
```
在上面的示例代码中,我们创建了一个大小为 1024 字节的共享内存对象,并将其命名为 "MySharedMemory"。然后,我们将其映射到当前进程的地址空间中,并通过指针读取了共享内存中的数据。最后,我们取消了共享内存区域的映射并关闭了共享内存对象句柄。
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.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)