用过的一些Api,随时更新(一)

 

GetVersionEx 察看现在是什么操作系统

 

HMODULE GetModuleHandle(

  LPCTSTR lpModuleName

);

功能:察看现在模块的句柄,返回一个内存地址/基地址

 

使用方法:  参数是一个.dll或者是.exe的文件,需要写路径名,路径名用""括起

 

例子:

#include <iostream.h>

#include<windows.h>

void main()

{

    cout<<GetModuleHandle("H:\Winamp\Winamp.exe");

}

 

 

 

BOOL WINAPI Process32First(

  HANDLE hSnapshot,

  LPPROCESSENTRY32 lppe

);

 

功能:得到一个首进程的资料

 

参数:hSnapshot是一个句柄值通过调用CreateToolhelp32Snapshot函数得到

 

     lppe是一个PROCESSENTRY32结构体值

 

 

 

 

BOOL WINAPI Process32Next(

  HANDLE hSnapshot,

  LPPROCESSENTRY32 lppe

);

 

 

功能:在得到首进程的情况下,调用这个函数可察看用Process32First函数得到进程的下一个

 

进程,可用循环察看,函数会自动识别是否到了最后一个进程,如果到了,函数自动退出

 

参数:同上

 

 

 

 

 

HANDLE WINAPI CreateToolhelp32Snapshot(

  DWORD dwFlags,

  DWORD th32ProcessID

);

 

功能:可得到在系统内进程的映射

 

参数:dwFlags是有几个可选择的,详见msdn

 

     th32ProcessID是进程的id号,当为0时传的是当前进程,如果是当前系统内的

 

     id时,就是察看id号所指向的进程信息

 

 

 

 

 

 

Access Tokens

 

功能:对权限的操作   //详见msdn文档

 

 

 

 

HANDLE CreateThread(

  LPSECURITY_ATTRIBUTES lpThreadAttributes,

  SIZE_T dwStackSize,

  LPTHREAD_START_ROUTINE lpStartAddress,

  LPVOID lpParameter,

  DWORD dwCreationFlags,

  LPDWORD lpThreadId

);

功能:创建一个线程

 

参数:lpThreadAttributes 一般设为NULL 具体功能使用MSDN查看

 

     dwStackSize 一般设为0,详见msdn

 

     lpStartAddress 为线程函数的地址(在一个程序中为线程函数名称)

 

     lpParameter 为线程函数的参数,只能是1个参数,不过可以是1个结构体

 

     dwCreationFlags 一般为0,具体服务见msdn

 

     lpThreadId 为线程的ID号,是一个返回得值

 

 

 

 

 

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 
); 

 

 LPCTSTR lpExistingFileName     :参数为存在文件的路径和名称

 

 LPCTSTR lpNewFileName       :参数为复制完的文件的名称和路径

 

BOOL bFailIfExists           :如果是TRUE的话,并且复制的文件已经存在(就是已复制完),那么这个函数的功能就失败,如果是FALSE的话,并且复制的文件已经存在,就覆盖原来得文件,并且函数调用成功

 

 

 

 

 

GetModuleFileNameEx  是得到一个进程路径的函数,与之相关的函数为

EnumProcessModules函数

 

DWORD GetModuleFileNameEx( 
  HANDLE hProcess, 
  HMODULE hModule, 
  LPTSTR lpFilename, 
  DWORD nSize 
); 

 

HANDLE hProcess    :  是要察看进程的句柄 

HMODULE hModule    :是一个模版的句柄,如果为NULL, 就为当前进程的路径

LPTSTR lpFilename  :是将路径写入这个字符数组内

DWORD nSize         : 是缓冲区的大小

 

 

 

 

建立1个进程

 

 

BOOL CreateProcess(

  LPCTSTR lpApplicationName,

  LPTSTR lpCommandLine,

  LPSECURITY_ATTRIBUTES lpProcessAttributes,

  LPSECURITY_ATTRIBUTES lpThreadAttributes,

  BOOL bInheritHandles,

  DWORD dwCreationFlags,

  LPVOID lpEnvironment,

  LPCTSTR lpCurrentDirectory,

  LPSTARTUPINFO lpStartupInfo,

  LPPROCESS_INFORMATION lpProcessInformation

);

 

LPCTSTR lpApplicationName  :是要创建进程的文件路径

 

 

 

 

 

 

EnumProcessModules()函数枚举进程的模块

 

BOOL EnumProcessModules( 
  HANDLE hProcess, 
  HMODULE* lphModule, 
  DWORD cb, 
  LPDWORD lpcbNeeded   
); 

 

HANDLE      hProcess     :所要枚举的进程的句柄
  
HMODULE*    lphModule    :获得的进程的模块句柄 
  
DWORD          cb       :获得lphModule 的大小( sizeof( hModule ) ) 
  
LPDWORD      lpcbNeeded   : 返回hModule的大小
  
  
  
  
  
OpenProcess 函数 : 作用为打开一个存在的进程 
  
HANDLE OpenProcess( 
  DWORD dwDesiredAccess, 
  BOOL bInheritHandle, 
  DWORD dwProcessId 
); 
  
DWORD  dwDesiredAccess :为1个标志,作为这个函数可提供何种服务,具体 
  
选项参看MSDN 
  
BOOL  bInheritHandle   :如果是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 
); 
  
struct   in_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 入口函数的名称
  
  
  
  
关于服务的说明,首先一个服务都要有一个入口函数,入口函数可以是mainWinmain,这是执行函数代码的入口,但是不是确定这个是个服务的入口,真正的服务入口函数是WINAPI MyServiceStart(这个名称无所谓),这个是要传入SERVICE_TABLE_ENTRY这个结构体中的,已传入SERVICE_TABLE_ENTRY结构体中的名称为准,这个函数主要是对一个服务进行初始化,并且是执行一个服务的代码的主要功能
  
每个服务还必须要有MyServiceCtrlHandler这个函数,这个函数是对一个服务进行控制的,里面可以实现对一个服务进行的各种控制,如果没有写入里面的代码(控制方面的),那么这个服务就将没有那方面的控制功能。
  
  
  
  
  
SetServiceStatus 函数是更新一个服务的状态,当需要服务的状态有变化时,就要调用这个函数
  
BOOL SetServiceStatus( 
  SERVICE_STATUS_HANDLE hServiceStatus, 
  LPSERVICE_STATUS lpServiceStatus 
); 
  
SERVICE_STATUS_HANDLE hServiceStatus     这个是服务的句柄由RegisterServiceCtrlHandler函数的返回值取得 (这个结构体变量要声明为一个服务的全局变量)
  
LPSERVICE_STATUS lpServiceStatus       :   这个是要将服务更新成何种状态的参数,这是个结构体
  
  
  
  
  
  
SERVICE_STATUS 结构体是用于存放服务的状态
  
typedef struct _SERVICE_STATUS {
  DWORD dwServiceType;
  DWORD dwCurrentState;
  DWORD dwControlsAccepted;
  DWORD dwWin32ExitCode;
  DWORD dwServiceSpecificExitCode;
  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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值