C++ windows程序设计

windows常用数据类型

win数据类型命名规律win数据类型win数据类型2win数据类型3


windows 常用API函数

一、使用API下载文件(URLDownloadToFile)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <Windows.h>
#include <tchar.h>
#pragma comment(lib, "Urlmon.lib")

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
HRESULT hret = URLDownloadToFile(NULL, _T("https://i0.hdslb.com/bfs/archive/4de86ebf90b044bf9ba2becf042a8977062b3f99.png"), _T("D:\\123.png"), 0, NULL);
if (hret == S_OK)
{
MessageBox(NULL, _T("下载成功"), _T("Tip"), MB_OK);
}
else
{
MessageBox(NULL, _T("下载失败"), _T("Tip"), MB_OK);
}
return 0;
}
二、使用API打开文件\网站(ShellExecuteEx)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <Windows.h>
#include <tchar.h>
#pragma comment(lib, "Urlmon.lib")

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
SHELLEXECUTEINFO ShellInfo = { 0 };
ShellInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShellInfo.lpVerb = _T("open");
ShellInfo.lpFile = _T("D:\\123.png");
ShellInfo.nShow = SW_SHOW;

BOOL bRET = ShellExecuteEx(&ShellInfo);

return 0;
}
三、使用API删除文件(DeleteFile)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <Windows.h>
#include <tchar.h>
#pragma comment(lib, "Urlmon.lib")

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
BOOL bRet = DeleteFile(_T("D:\\11.txt"));
if (bRet)
{
MessageBox(NULL, _T("删除成功"), _T("Tip"), MB_OK);
}
else
{
MessageBox(NULL, _T("删除失败"), _T("Tip"), MB_OK);
}

return 0;
}
四、使用API复制文件(CopyFile)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <Windows.h>
#include <tchar.h>
#pragma comment(lib, "Urlmon.lib")

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
BOOL bRet = CopyFile(_T("D:\\123.png"), _T("C:\\Users\\86173\\Desktop\\abc.png"), FALSE);
if (bRet)
{
MessageBox(NULL, _T("拷贝成功"), _T("Tip"), MB_OK);
}
else
{
MessageBox(NULL, _T("拷贝失败"), _T("Tip"), MB_OK);
}

return 0;
}
五、使用API 移动\重命名 文件\文件夹(MoveFile)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <Windows.h>
#include <tchar.h>
#pragma comment(lib, "Urlmon.lib")

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
BOOL bRet = MoveFile(_T("D:\\123.png"), _T("C:\\Users\\86173\\Desktop\\abc.jpg"));
if (bRet)
{
MessageBox(NULL, _T("移动成功"), _T("Tip"), MB_OK);
}
else
{
MessageBox(NULL, _T("移动失败"), _T("Tip"), MB_OK);
}

return 0;
}
六、获取错误码函数:GetLastError
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <Windows.h>
#include <tchar.h>
#pragma comment(lib, "Urlmon.lib")

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
BOOL bRet = DeleteFile(_T("D:\\11.txt"));
if (bRet)
{
MessageBox(NULL, _T("删除成功"), _T("Tip"), MB_OK);
}
else
{
DWORD dwError = GetLastError();
if (dwError == ERROR_FILE_NOT_FOUND)//2,尽量使用错误码的宏/0是运行正确
{
MessageBox(NULL, _T("文件不存在,请确认删除路径是否正确"), _T("Tip"), MB_OK);
}
else
{
MessageBox(NULL, _T("删除失败"), _T("Tip"), MB_OK);
}
}

return 0;
}
七、文件的创建与打开:CreatFile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <Windows.h>
#include <tchar.h>
#pragma comment(lib, "Urlmon.lib")

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
HANDLE hFile = CreateFile(_T("D:\\ok.txt"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
MessageBox(NULL, _T("文件打开成功"), _T("Tip"), MB_OK);
}
else
{
MessageBox(NULL, _T("打开失败"), _T("Tip"), MB_OK);
}

return 0;
}

==这里的打开是句柄不是真正的打开,只是可以操作数据了==

==CREATE_ALWAYS== 创建文件,若存在则覆盖并清空内容

==OPEN_EXISTING== 打开一个已有的文件不存在则报错

==OPEN_ALWAYS== 如果文件存在则打开不存在则新建

八、关闭文件句柄(内核对象):CloseHandle
1
BOOL CliseHandle(HANDLE hObject);
九、获取文件大小(字节)的两个函数
①GetFileSize函数

==小于4G用低32位,大于4G用高32位,两个不同的参数 GetFileSize(NULL, NULL);==

1
2
3
4
5
6
7
8
9
10
11
12
13
14
HANDLE hFile = CreateFile(_T("D:\\logo.png"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
DWORD dwFileSize = GetFileSize(hFile, NULL);

TCHAR szFileSize[128] = { 0 };
_stprintf(szFileSize, _T("文件的大小是:%d"), dwFileSize);
MessageBox(NULL, szFileSize, _T("Tip"), MB_OK);
CloseHandle(hFile);
}
else
{
MessageBox(NULL, _T("打开失败"), _T("Tip"), MB_OK);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
HANDLE hFile = CreateFile(_T("D:\\logo.png"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
DWORD dwFileSizeHigh = 0;
DWORD dwFileSize = GetFileSize(hFile, &dwFileSizeHigh);

LONGLONG lFileSize = (((LONGLONG)dwFileSizeHigh) << 32) | dwFileSize;

TCHAR szFileSize[128] = { 0 };
_stprintf(szFileSize, _T("文件的大小是:%lld"), lFileSize);
MessageBox(NULL, szFileSize, _T("Tip"), MB_OK);
CloseHandle(hFile);
}
else
{
MessageBox(NULL, _T("打开失败"), _T("Tip"), MB_OK);
}
②GetFileSizeEx函数

==EX结尾是已有函数的扩展函数==

==整合了高32位和低32位大小==

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <Windows.h>
#include <tchar.h>
#pragma comment(lib, "Urlmon.lib")

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
HANDLE hFile = CreateFile(_T("D:\\logo.png"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
LARGE_INTEGER fileSize = { 0 };
BOOL bRet = GetFileSizeEx(hFile, &fileSize);
if (bRet)
{
TCHAR szFileSize[128] = { 0 };
_stprintf(szFileSize, _T("文件的大小是:%lld"), fileSize.QuadPart);
MessageBox(NULL, szFileSize, _T("Tip"), MB_OK);
}
CloseHandle(hFile);
}
else
{
MessageBox(NULL, _T("打开失败"), _T("Tip"), MB_OK);
}
return 0;
}
十、文件的写操作:WriteFile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <Windows.h>
#include <tchar.h>
#pragma comment(lib, "Urlmon.lib")

struct Student
{
int age;
char sex;
char name[32];
};

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
HANDLE hFile = CreateFile(_T("D:\\ok.txt"), GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
MessageBox(NULL, _T("打开失败"), _T("Tip"), MB_OK);
return -1;
}

int num = 123;
DWORD dwRealWrite = 0;
//BOOL bRet = WriteFile(hFile, &num, sizeof(int), &dwRealWrite, NULL);

char ch = 'q';
//BOOL bRet = WriteFile(hFile, &ch, sizeof(char), &dwRealWrite, NULL);

char szText[] = "啦啦啦";
//BOOL bRet = WriteFile(hFile, szText, sizeof(szText), &dwRealWrite, NULL);

Student stud;
stud.age = 20;
stud.sex = 'm';
strcpy(stud.name, "张三");
BOOL bRet = WriteFile(hFile, &stud, sizeof(stud), &dwRealWrite, NULL);

if(bRet)
{
MessageBox(NULL, _T("写入成功"), _T("Tip"), MB_OK);
}
else
{
MessageBox(NULL, _T("写入失败"), _T("Tip"), MB_OK);
}

CloseHandle(hFile);
return 0;
}
十一、文件的读操作:ReadFile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <windows.h>
#include <tchar.h>
#include <iostream>
using namespace std;

struct Student
{
int age;
char sex;
char name[32];
};

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
HANDLE hFile = CreateFile(_T("D:\\VC驿站ok.txt"), GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
MessageBox(NULL, _T("文件打开失败!"), _T("Tip"), MB_OK);
return -1;
}

int num = 123;
DWORD dwRealWrite = 0;
BOOL bRet = WriteFile(hFile, &num, sizeof(int), &dwRealWrite, NULL);

char ch = 'q';
bRet = WriteFile(hFile, &ch, sizeof(char), &dwRealWrite, NULL);

char szText[32] = "我是VC驿站的粉丝!";
bRet = WriteFile(hFile, szText, sizeof(szText), &dwRealWrite, NULL);

Student stud;
stud.age = 20;
stud.sex = 'm';
strcpy(stud.name, "zhangsan");

bRet = WriteFile(hFile, &stud, sizeof(stud), &dwRealWrite, NULL);
if (bRet)
{
MessageBox(NULL, _T("数据写入成功!"), _T("Tip"), MB_OK);
}
else
{
MessageBox(NULL, _T("数据写入失败!"), _T("Tip"), MB_OK);
}

CloseHandle(hFile);

////////////////////////////////////////////////////////////////
hFile = CreateFile(_T("D:\\VC驿站ok.txt"), GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
MessageBox(NULL, _T("文件打开失败!"), _T("Tip"), MB_OK);
return -1;
}

//从文件中读数据
int ret_num = 0;
DWORD dwRealRead = 0;
bRet = ReadFile(hFile, &ret_num, sizeof(ret_num), &dwRealRead, NULL);

char cha = 0;
bRet = ReadFile(hFile, &cha, sizeof(cha), &dwRealRead, NULL);

char szTextRet[32] = { 0 };
bRet = ReadFile(hFile, szTextRet, sizeof(szTextRet), &dwRealRead, NULL);

Student stud2;
bRet = ReadFile(hFile, &stud2, sizeof(Student), &dwRealRead, NULL);
if (bRet)
{
MessageBox(NULL, _T("数据读取成功!"), _T("Tip"), MB_OK);
}
else
{
MessageBox(NULL, _T("数据读取失败!"), _T("Tip"), MB_OK);
}





CloseHandle(hFile);
return 0;
}
十二、文件指针:SetFilePointer
1

十三、目录的创建(单一层级):CreateDirectory

==创建多层级目录可使用MakeSureDirectoryPathExists函数==

1

十四、目录的删除(空目录):RemoveDirectory
1

十五、文件的查找与遍历:FindFirstFile、FindNextFile
1

十六、获得当前所有磁盘分区:GetLogicalDriveStrings
1

十七、获得磁盘分区类型:GetDriveType
1

更新于

请我喝[茶]~( ̄▽ ̄)~*

Chen 微信支付

微信支付

Chen 支付宝

支付宝

Chen 贝宝

贝宝