GetVersionEx 察看现在是什么操作系统
HMODULE GetModuleHandle(
);
功能:察看现在模块的句柄,返回一个内存地址/基地址
使用方法:
例子:
#include <iostream.h>
#include<windows.h>
void main()
{
}
BOOL WINAPI Process32First(
);
功能:得到一个首进程的资料
参数:hSnapshot是一个句柄值通过调用CreateToolhelp32Snapshot
BOOL WINAPI Process32Next(
);
功能:在得到首进程的情况下,调用这个函数可察看用Process32First函数得到进程的下一个
进程,可用循环察看,函数会自动识别是否到了最后一个进程,如果到了,函数自动退出
参数:同上
HANDLE WINAPI CreateToolhelp32Snapshot
);
功能:可得到在系统内进程的映射
参数:dwFlags是有几个可选择的,详见msdn
Access Tokens
功能:对权限的操作
HANDLE CreateThread(
);
功能:创建一个线程
参数:lpThreadAttributes 一般设为NULL 具体功能使用MSDN查看
DWORD WaitForSingleObject(
HANDLE hHandle,
DWORD dwMilliseconds
);
功能: 等待线程运行结束后在开始运行主线程的代码
参数: HANDLE hHandle
DWORD dwMilliseconds :为设置的等待时间,详见msdn
fopen 函数是建立或打开一个文件
FILE 是fopen函数的一个结构体,需要是一个指针值,由fopen函数返回后得到
fopen ("name","type")
name 是要打开或创建的文件名称
type 是操作类型,具体参看MSDN文档
fputc 函数是将字符写入建立的文件中
fputc (ch,fp)
ch 只能是单个字符,如果要输入一个字符串的话可以传递一个指针值,然后按
位写入,用指针运算控制
fp 是建立文件的指针值,是fopen函数返回的指针
CopyFile 函数是复制1个文件的函数
BOOL CopyFile(
LPCTSTR lpExistingFileName,
LPCTSTR lpNewFileName,
BOOL bFailIfExists
);
BOOL bFailIfExists
GetModuleFileNameEx
EnumProcessModules函数
DWORD GetModuleFileNameEx(
HANDLE hProcess,
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize
);
HANDLE hProcess
HMODULE hModule
LPTSTR lpFilename
DWORD nSize
建立1个进程
BOOL CreateProcess(
);
LPCTSTR lpApplicationName
EnumProcessModules()函数枚举进程的模块
BOOL EnumProcessModules(
HANDLE hProcess,
HMODULE* lphModule,
DWORD cb,
LPDWORD lpcbNeeded
);
HANDLEhProcess :所要枚举的进程的句柄
HMODULE*lphModule :获得的进程的模块句柄
DWORDcb, :获得lphModule 的大小( sizeof( hModule ) )
LPDWORDlpcbNeeded : 返回hModule的大小
OpenProcess 函数 : 作用为打开一个存在的进程
HANDLE OpenProcess(
DWORD dwDesiredAccess,
BOOL bInheritHandle,
DWORD dwProcessId
);
DWORDdwDesiredAccess :为1个标志,作为这个函数可提供何种服务,具体
选项参看MSDN
BOOLbInheritHandle :如果是TRUE,那么函数返回的句柄是可继承的,如
过是FLASE,那么返回的句柄为不可继承的
DWORD dwProcessId:选定进程的ID号,用于确定要打开哪个进程
返回值 :本函数返回的值为选定进程的句柄值
GetNumberOfInterfaces函数为枚举出本机有几个网络接口
DWORD GetNumberOfInterfaces(
PDWORD pdwNumIf
);
PDWORD pdwNumIf:是一个DWORD的指针值,被初始化为本机网络接口数
RegSetValue给注册表添加键值的函数
LONG RegSetValue(
HKEY hKey,
LPCTSTR lpSubKey,
DWORD dwType,
LPCTSTR lpData,
DWORD cbData
);
HKEY hKey: 是键值的位置,可以从RegOpenKeyEx的返回值得到,也可以用给出的一些主键标志
LPCTSTR lpSubKey: 是键值得名称,也可以是一个键值得位置(是想要创建键的位置和名称)
DWORD dwType: 是键值得数据类型,具体参看MSDN
LPCTSTR lpData: 是键值得内容
DWORD cbData: 存储键值内容数组的大小(lpData)
用于将hostinfo结构变量中的h_addr_list转化为标准的点分表示的IP
char* FAR inet_ntoa(
struct in_addr in
);
structin_addr in : 传入一个in_addr的解构体
返回值: 返回一个char型的指针数据,里面是转化的成标准点分表示的IP
gethostname();获取主机名
int gethostname(
char* name,
int namelen
);
char* name: 将主机名存入这个缓冲区内
int namelen: 这个缓冲区的长度
gethostbyname(); 有主机名获得主机IP
struct hostent* FAR gethostbyname(
const char* name
);
const char* name: 是主机名
返回值: 如果没有错误返回一个hostent的结构体,具体参看MSDN
LoadLibraryEx用于装载DLL文件
HMODULE LoadLibraryEx(
LPCTSTR lpFileName,
HANDLE hFile,
DWORD dwFlags
);
LPCTSTR lpFileName: 想要装载DLL的名称和路径
HANDLE hFile: 根据MSDN文档中写的It must be NULL. 照做……
DWORD dwFlags: 为0值就可以,具体有什么服务去看MSDN
GetProcAddress获得显示加载DLL文件中的函数地址
FARPROC GetProcAddress(
HMODULE hModule,
LPCSTR lpProcName
);
HMODULE hModule: 是LoadLibraryEx的返回值
LPCSTR lpProcName: 是DLL中的函数名(你想要获得的)
返回值: GetProcAddress返回一个要调用DLL中函数的一个地址,用函数指针获得,需要转换成和要
调用DLL函数中的类型一样的类型,用数据转换就可以
-------------------------------------------------------------------------------------------
OpenSCManager 函数功能是打开服务控制管理器
SC_HANDLE OpenSCManager(
LPCTSTR lpMachineName,
LPCTSTR lpDatabaseName,
DWORD dwDesiredAccess
);
LPCTSTR lpMachineName: 一个指向字符串的指针,里面保存着是要打开的电脑的名称,如果是本机就传递NULL就可以
LPCTSTR lpDatabaseName: 传递NULL就可以
DWORD dwDesiredAccess: 是传递一个标志,看以什么方式打开,并传递什么样的服务
返回值 : 如果调用成功的话将传递一个服务控制器的句柄,如果调用失败的话,传递的句柄值则是NULL
CreateService 函数功能是建立一个服务
SC_HANDLE CreateService(
SC_HANDLE hSCManager,
LPCTSTR lpServiceName,
LPCTSTR lpDisplayName,
DWORD dwDesiredAccess,
DWORD dwServiceType,
DWORD dwStartType,
DWORD dwErrorControl,
LPCTSTR lpBinaryPathName,
LPCTSTR lpLoadOrderGroup,
LPDWORD lpdwTagId,
LPCTSTR lpDependencies,
LPCTSTR lpServiceStartName,
LPCTSTR lpPassword
);
SC_HANDLE hSCManager: 是OpenSCManager函数的返回值,是打开服务管理器的句柄值
LPCTSTR lpServiceName: 指向一个字符串, 是要建立服务的名称
LPCTSTR lpDisplayName: 指向一个字符串,是建立服务显示的名称
剩下的太多了………看MSDN文档吧………
OpenService 函数是打开一个已有的服务
SC_HANDLE OpenService(
SC_HANDLE hSCManager,
LPCTSTR lpServiceName,
DWORD dwDesiredAccess
);
SC_HANDLE hSCManager: 是OpenSCManager函数的返回值,是打开服务管理器的句柄值
LPCTSTR lpServiceName: 指向一个字符串,里面保存着要打开服务的名称
DWORD dwDesiredAccess: 是一个标志,看需要什么样的服务,详见MSDN
返回值 : 当调用成功后,它返回一个句柄,这个句柄将被StartService 等函数调用
StartService 函数是开始运行一个服务
BOOL StartService(
SC_HANDLE hService,
DWORD dwNumServiceArgs,
LPCTSTR* lpServiceArgVectors
);
SC_HANDLE hService: 是OpenService 函数的返回值
DWORD dwNumServiceArgs: 是要向ServiceMain 函数传递多少个参数(没有传0)
LPCTSTR* lpServiceArgVectors: 是要向ServiceMain 函数传递的参数,传NULL就成了……
StartServiceCtrlDispatcher 函数是一个启动服务程序的入口
BOOL StartServiceCtrlDispatcher(
const LPSERVICE_TABLE_ENTRY lpServiceTable
);
const LPSERVICE_TABLE_ENTRY lpServiceTable: 指向一个结构体里面存储着服务函数起点的相关信息
typedef struct _SERVICE_TABLE_ENTRY {LPTSTR lpServiceName; LPSERVICE_MAIN_FUNCTION lpServiceProc;
}
LPTSTR lpServiceName: 是一个服务的名称 (和服务程序相关联的)
LPSERVICE_MAIN_FUNCTION lpServiceProc: 是一个ServiceMain 入口函数的名称
关于服务的说明,首先一个服务都要有一个入口函数,入口函数可以是main或Winmain,这是执行函数代码的入口,但是不是确定这个是个服务的入口,真正的服务入口函数是WINAPI MyServiceStart(这个名称无所谓),这个是要传入SERVICE_TABLE_ENTRY这个结构体中的,已传入SERVICE_TABLE_ENTRY结构体中的名称为准,这个函数主要是对一个服务进行初始化,并且是执行一个服务的代码的主要功能
每个服务还必须要有MyServiceCtrlHandler这个函数,这个函数是对一个服务进行控制的,里面可以实现对一个服务进行的各种控制,如果没有写入里面的代码(控制方面的),那么这个服务就将没有那方面的控制功能。
SetServiceStatus 函数是更新一个服务的状态,当需要服务的状态有变化时,就要调用这个函数
BOOL SetServiceStatus(
SERVICE_STATUS_HANDLE hServiceStatus,
LPSERVICE_STATUS lpServiceStatus
);
SERVICE_STATUS_HANDLE hServiceStatus: 这个是服务的句柄由RegisterServiceCtrlHandl er函数的返回值取得 (这个结构体变量要声明为一个服务的全局变量)
LPSERVICE_STATUS lpServiceStatus: 这个是要将服务更新成何种状态的参数,这是个结构体
SERVICE_STATUS 结构体是用于存放服务的状态
typedef struct _SERVICE_STATUS {DWORD dwServiceType; DWORD dwCurrentState; DWORD dwControlsAccepted; DWORD dwWin32ExitCode; DWORD dwServiceSpecificExitCod e; DWORD dwCheckPoint; DWORD dwWaitHint;
} SERVICE_STATUS, *LPSERVICE_STATUS;
看MSDN文档
CDatabase 类是用来对数据源的操作
::Open 方法是用来打开数据源
virtual BOOL Open(
LPCTSTR lpszDSN,
BOOL bExclusive = FALSE,
BOOL bReadOnly = FALSE,
LPCTSTR lpszConnect = _T("ODBC;"),
BOOL bUseCursorLib = TRUE
);
LPCTSTR lpszDSN: 是数据源的名称
BOOL bExclusive = FALSE
BOOL bReadOnly = FALSE: 这2个参数可以缺省都为FALSE,详细看MSDN
LPCTSTR lpszConnect: 用来填入连接数据源的用户名同密码的参数,ODBC为硬编码必须要写入的 举例 "ODBC;UID=sa;PWD=;"
下个参数也用缺省就可以,详细看MSDN
CStdioFile类的功能是对文件进行操作
{
ReadString方法是用来读取文件中的字符,按行读取(循环调用后可以读取
每一行的数据)
}
Memcmp 函数用来从头判断(1 为起点)到第几个元素是否匹配 (区分大小写)判断存在内存中的元素(字符串指针)
以上为2006年写的,找到后直接贴过来的,看见这个才有将以后自己使用过的api继续补完的想法
此文转自:http://blog.sina.com.cn/s/blog_60dc6dcf0100e3yi.html