SDK
:
software develop kits
(API的集合)
MFC:
Microsoft foundation class
- messagebox(hwnd,L" ",L" ",MB_OK); win32 PSDK ->API
- messagebox (L" ") MFC PSDK ->API
文件读取:
int readFile(char* path,void** buff,long &size)
{
FILE* fp = NULL;
if ((fp = fopen(path, "rb")) == NULL)
{
printf("fopen()打开文件失败\n");
return 0;
}
fseek(fp, 0, SEEK_END);//把文件内部指针定位到结束的位置,成功返回0;
size = ftell(fp);
rewind(fp);//把文件内部指针重新定位到文件的起始位置
if((*buff = (char*)malloc(size)) == NULL)
{
printf("申请内存失败\n");
return 0;
}
fread(*buff, size, 1, fp);
fclose(fp);
return 1;
}
复制文件至系统目录:
原型:_INTRIMP wchar_t *wcscat(
wchar_t *strDestination, //'\0'结尾的目标字符串
const wchar_t *strSource //'\0'结尾的源字符串
);
用法:#include <stdlib.h>
功能:把strSource所指字符串添加到strDestination结尾处,覆盖strDestination结尾处的'\0'并添加'\0'。
说明:strSource和strDestination所指内存区域不可以重叠且strDestination必须有足够的空间来容纳strSource的字符串。
返回值 : 返回指向strDestination的
指针. No return value is reserved to indicate an error.
备注 : 因为wcscat在strDestination追加strSource前不进行检查,这是一个
缓冲区溢出的潜在原因。故使用时应注意。推荐使用wcscat_s替代.
#include "stdafx.h"
#include <windows.h>
int main()
{
wchar_t strSystemDir[MAX_PATH] = {};
wchar_t strWindowsDir[MAX_PATH] = {};
wchar_t strSelfDir[MAX_PATH] = {};
GetSystemDirectoryW(strSystemDir, MAX_PATH);
GetWindowsDirectoryW(strWindowsDir, MAX_PATH);
GetModuleFileNameW(0, strSelfDir, MAX_PATH);
wcscat_s(strSystemDir, L"\\CopyFileDemo_.exe");
wcscat_s(strWindowsDir, L"\\CopyFileDemo_.exe");
if (FALSE == CopyFileW(strSelfDir, strSystemDir, FALSE))
{
DWORD dwError = GetLastError();
printf("%d\n", dwError);
}
if (FALSE == CopyFileW(strSelfDir, strWindowsDir, FALSE))
{
DWORD dwError = GetLastError();
printf("%d\n", dwError);
}
return 0;
}
WINSOCK:
*****************
winsockServer
*****************
#include "stdafx.h"
#include <WinSock2.h>
#include <Windows.h>
int main()
{
WSADATA wsaData = {};
WSAStartup(MAKEWORD(2, 2), &wsaData);
//socket(通信协议族tcp/ip)
SOCKET sockServer = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
//SOCKET s = socket(PF_INET, SOCK_DGRAM, IPPROTO_TCP); udp
sockaddr_in sockAddr = {};
//协议族
sockAddr.sin_family = PF_INET;
//ip 当前需要制定的ip地址
sockAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
sockAddr.sin_port = htons(10086);
bind(sockServer, (SOCKADDR*)&sockAddr, sizeof(sockAddr));
listen(sockServer, 10);
SOCKET sockClient = {};
SOCKADDR addrClient = {};
int nSize = sizeof(addrClient);
sockClient = accept(sockServer, &addrClient, &nSize);
printf("客户端已连接");
closesocket(sockServer);
closesocket(sockClient);
WSACleanup();
return 0;
}
******************
winsockClient
******************
// WinSockDemoClient.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <WinSock2.h>
#include <Windows.h>
#pragma comment(lib,"ws2_32")
int main()
{
WSADATA wsaData = {};
WSAStartup(MAKEWORD(2, 2), &wsaData);
SOCKET sockClient = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
sockaddr_in addrServer = {};
addrServer.sin_family = PF_INET;
addrServer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addrServer.sin_port = htons(10086);
connect(sockClient, (SOCKADDR*)&addrServer, sizeof(addrServer));
closesocket(sockClient);
WSACleanup();
return 0;
}