WindowsAPI函数中文详解V1.0
目录
WindowsAPI函数中文详解V1.0 ----------------------------------------------------------------------------- 1 VC API常用函数简单例子大全 ---------------------------------------------------------------------------- 6
第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄 ------------------------------------------- 6 第二个:SendMessage根据窗口句柄发送一个消息给窗口 6 第三个:GetCursorPos获取鼠标当前位置(屏幕) -------- 8 第四个:WindowFromPoint根据坐标点获得对应的窗口句柄 -------------------------------------------------------------------------------- 9 第五个MoveWindow根据窗口句柄移动窗口,改变窗口大小 ------------------------------------------------------------------------------- 10 第六个ShowWindow设置窗口显示状态,如隐藏,最大化,最小化 ------------------------------------------------------------------------- 10 第七个SetCursorPos设置鼠标的位置、把鼠标移动到指定的位置 ------------------------------------------------------------------------- 11 第八个CopyFile复制一个文件 -------------------------------------- 11 第九个DeleteFile删除一个文件 ----------------------------------- 11 第十个CreateDirectory创建一个文件夹(目录) --------- 11 第十一个:GetClientRect获得窗口大小 ---------------------- 12 第十二个:GetCWindowRect获得窗口大小(相对屏幕)12 第十三个FindFirstFile寻找文件以及获得文件的信息 ------ 13 第十四个FindNextFile寻找文件 ---------------------------------- 13 第十五个MoveFile移动文件 ---------------------------------------- 14 第十六个GetClassName根据窗口句柄获得窗口类名 ----- 14 第十七个SetFileAttributes设置文件属性 -------------------- 14 第十八个ShellExecute运行一个程序 函数定
义:ShellExecute(HWND hwnd, LPCSTR lpOperation, LP
CSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd); 第一个参数hwnd是父窗口的句柄,可以为NULL,第二个参数lpOperation表示行为,第三个参数lpFile是程序的路径名,第四个参数lpParameters是给所打开程序的参数,可以为NULL,第五个参数lpDirectory可以为NULL,第六个参数nShowCmd跟ShowWindow函数的第二
个参数一样,作用也一样,如果打开的程序有窗口的话,这个参数就指明了窗口如何显示. 例如打开一个记事本: ------------------- 16 第十九个PlaySound播放一个WAV文件 --------------------- 16 第二十个GetModuleFileName根据模块导入表获程序的完整路径 ------------------------------------------------------------------------- 17 第二十一个CreateWindow创建一个窗口 -------------------- 17 第二十二个GetMessage获取窗口消息 ------------------------ 23 第二十三个RegisterClass注册窗口类,参照CreateWindow --------------------------------------------------------- 23 第二十四个UpdateWindow参照CreateWindow------ 23 第二十五个DispatchMessage参照CreateWindow -- 23 第二十六个LoadCursorFromFile从磁盘加载一个光标文件,函数返回该光标句柄 ------------------------------------------------ 23 第二十七个CreateSolidBrush创建一个画刷,函数返回画刷句柄 ------------------------------------------------------------------------- 23 第二十八个LoadImage装载位图、图标、光标函数 -------- 24 第二十九个GetDC根据窗口句柄获取设备上下文(DC)返回DC句柄 ---------------------------------------------------------------------- 26 第三十个Rectnagle在窗口中画一个矩形 ---------------------- 26 第三十个CreateToolhelp32Snapshot给当前进程拍一个照 ------------------------------------------------------------------------------- 27 第三十一个Process32First根据CreateToolhelp32Snapshot函数返回的句柄获取进程信息 ------------------------------------------------ 27 第三十二个OpenProcess根据进程ID号获得进程句柄,句柄通过函数返回 ------------------------------------------------------------------- 28 第三十三个TerminateProcess结束一个进程(需进程句柄做参数) ---------------------------------------------------------------------- 28 第三十四个CreatePen创建一个画笔(返回画笔句柄) --- 29 第三十五个CreateSolidBrush创建一个画刷 ---------------- 29 第三十六个SelectObject把GDI对象选入相应的DC中 29 第三十七个 ReadProcessMemory根据进程句柄读取相应的一段内存(读其它进程里的内存) -------------------------------- 31 第三十八个WriteProcessMemory根据进程句柄写入相应的一段内存(写入其它进程里的内存) ----------------------------- 32 第三十九个CreateThread创建一个线程(多线程) ------- 33 第四十个GetCurrentProcessId获得当前进程ID ------- 35 第四十一个CreateCompatibleDC创建一个兼容的内存设备上下文(DC) ----------------------------------------------------------- 35 第四十二个GetObject获取一个对象信息(如位图,图标,光标) ------------------------------------------------------------------------- 35 第四十三个BitBlt在窗口输出一个位图 --------------------------- 35 第四十四个GetWindowText根据窗口句柄获得窗口标题名37 第四十五个SetWindowText根据窗口句柄设置窗口标题名38 第四十六个GetCurrentProcess获得当前线程句柄 ------- 38
第四十七个OpenProcessToken获得一个进程的访问令牌句柄 ---------------------------------------------------------------------------- 38 第四十七个LookupPrivilegeValue函数查看对应系统权限的特权值,返回信息到一个LUID结构体里 上面讲过了,进程有权限一说,那么大家也能猜到,进程权限的信息也一定存储在一个结构体里,这个结构体描述了进程权限相关的一些信息。这个结构体在这里就不具体描述了,我们所要做的,只是把一个进程权限设置成SeDeDebug就行了,所以我们只要知道
TOKEN_PRIVILEGES便是描述进程权限的结构体就可以了。而LookupPrivilegeValue函数是根据访问令牌句获取相应的权限信息吗? 不是的。TOKEN_PRIVILEGES结构里的
Privileges[0].Luid跟这个函数所查询的东西相对应,也就是说,如果进程是SeDeDeBug权限,那Privileges[0].Luid的取值是怎样的呢?用LookupPrivilegeValue函数便可以获取其取值。 这个函数是这样定义的:
BOOL LookupPrivilegeValue(LPCTSTR lpSystemName,LPCTSTR lpName,PLUID lpLuid); 第一个参数
lpSystemName通常都填NULL,本地系统调用,第二个参数lpName填要查询的权限名,如要查询的是SeDeDebug权限则取值是SE_DEBUG_NAME,第三个参数lpLuid接收其取值。 如
LUID luid;LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&luid); ------------------------------------------------------------------ 39 第四十八个AdjustTokenPrivileges调整一个进程的访问令牌信息(权限) --------------------------------------------------------- 39 第四十九个LoadLibrary加载动态链接库,返回动态链接库模块句柄 ---------------------------------------------------------------------- 40 第五十个GetProcAddress根据模块句柄获取相应的函数地址 ------------------------------------------------------------------------------- 40 第五十一个SetWindowsHookEx安装一个钩子 ----------- 41 第五十二个SHGetFileInfo获取一个文件的各项信息(文件关联图标,属性等) 函数定
义: DWORD SHGetFileInfo(LPCSTR pszPath, DWORD dwFileAttributes, SHFILEINFOA FAR *psfi, UINT cbFileInfo, UINT uFlags); pszPath是文件的路径,
dwFileAttributes一般取0,如果想要获取文件夹信息的话,则取值为FILE_ATTRIBUTE_DIRECTORY,psfi是一个
SHFILEINFO结构的指针,该结构存储文件信息,定义如下:43 第五十三个RegCreateKeyEx在注册表里创建一个子键,或获取一个子键的句柄 ------------------------------------------------------ 44 第五十四个RegSetValueEx根据子键句柄在其下创建或修改一个键值 ------------------------------------------------------------------- 45 第五十五个RegDeleteValue根据子键句柄删除其下的一个键值 ---------------------------------------------------------------------------- 46