
Windows API巡礼
ACE1985
这个作者很懒,什么都没留下…
展开
-
《Windows API巡礼》---GetCurrentDirectory和GetModuleFileName
<br />使用GetCurrentDirectory和SetCurrentDirectory可以获取程序的当前目录,使用GetModuleFileName可以获取模块的路径,如果以NULL为参数调用GetModuleFileName,将会返回当前模块的路径。如果在程序主模块(.exe)中获取当前模块路径,便可以从当前的路径中提取出程序运行时所在的路径。下面分别介绍:<br />1)GetCurrentDirectory函数用于获取当前进程所在的目录:<br />DWORD WINAPI GetCurren原创 2010-06-30 20:10:00 · 2393 阅读 · 0 评论 -
《Windows API巡礼》のShell_NotifyIcon函数和NOTIFYICONDATA结构
<br />Shell_NotifyIcon函数用于向Windows系统任务栏的状态区域发送消息,原型如下:<br />BOOL Shell_NotifyIcon( __in DWORD dwMessage, __in PNOTIFYICONDATA lpdata);<br /><br />其中<br />(1)参数dwMessage表示该函数要执行的操作,取值如下:<br />NIM_ADD:往状态区添加一个图标;在参数lpdata指向的结构中的参数uID或guidItem给这个图标指原创 2010-12-21 16:37:00 · 2603 阅读 · 0 评论 -
《Windows API巡礼》のGetObject函数和GradientFill函数
<br />GetObject函数用于从指定的图形对象中获取信息,原型如下:<br />int GetObject( __in HGDIOBJ hgdiobj, __in int cbBuffer, __out LPVOID lpvObject);<br /><br />其中<br />(1)参数hgdiobj是图形对象的句柄,图形对象可以是如下几种:逻辑位图、刷子、字体、调色板、画笔或者由函数CreateDIBSection创建的设备无关位图;<br />(2)参数cbBu原创 2010-12-20 22:14:00 · 1867 阅读 · 0 评论 -
《Windows API巡礼》のDisableThreadLibraryCalls函数
<br />DisableThreadLibraryCalls函数用于使指定DLL的<br />DLL_THREAD_ATTACH和DLL_THREAD_DETACH通知无效,这可减少某些应用程序的工作集空间。原型如下:<br />BOOL WINAPI DisableThreadLibraryCalls(<br /> __in HMODULE hModule<br />);<br />参数hModule是指定DLL模块的句柄,可以使用LoadLibrary()、LoadLibraryEx()或GetM原创 2010-12-19 21:44:00 · 3173 阅读 · 0 评论 -
《Windows API巡礼》のGetWindowLong和SetWindowLong函数
<br />SetWindowLong函数用来改变指定窗口的属性,函数同时在窗口的额外内存中设置32位的偏移量值:<br />LONG WINAPI SetWindowLong(<br /> __in HWND hWnd, //指定窗口的句柄,或者间接地,窗口所属的类<br /> __in int nIndex, //指定要设置的属性值的偏移地址<br /> __in LONG dwNewLong //指定设置的新值<br />);<br /> <br />参数nIndex的取值如下:<br /原创 2010-08-28 20:53:00 · 2114 阅读 · 0 评论 -
《Windows API巡礼》のGetDlgItem*函数
<br />1)函数GetDlgItem用来获取指定对话框中控件的句柄:<br />HWND WINAPI GetDlgItem(<br /> __in_opt HWND hDlg, //包含控件的对话框的句柄<br /> __in int nIDDlgItem //要获取的控件的ID<br />);<br />函数调用成功返回指定控件的句柄,失败时返回NULL,表示无效的对话框或不存在的控件。<br /> <br />2)函数GetDlgItemText用来获取对话框中控件的标题(titl原创 2010-08-26 14:40:00 · 2313 阅读 · 0 评论 -
《WindowsAPI巡礼》---GetSystemTime和GetFileTime
<br />FILETIME结构包含了文件或目录的日期和时间信息:(自1601年1月1日以来,单位为100纳秒)<br />typedefstruct _FILETIME {<br /> DWORD dwLowDateTime; //低32位<br /> DWORD dwHighDateTime; //高32位<br />} FILETIME, *PFILETIME;<br /> <br />SYSTEMTIME结构包含了用户可识别的系统日期信息:<br />typedefstruct _SYSTEMT原创 2010-07-13 14:48:00 · 3087 阅读 · 0 评论 -
《Windows API巡礼》---GetFileVersionInfo函数和VerQueryValue函数
VS_FIXEDFILEINFO结构包含了文件的版本信息:typedefstruct tagVS_FIXEDFILEINFO { DWORD dwSignature; //包含的值是0xFEEF04BD DWORD dwStrucVersion; //该结构的32位二进制版本号,高16位是主版本号,低16位是副版本号 DWORD dwFileVersionMS; //该文件二进制版本号的高32bits DWORD dwFileVersionLS; //该文件二进制版本号的低32bits DWORD原创 2010-07-13 16:09:00 · 13393 阅读 · 3 评论 -
《Windows API巡礼》---WSAStartup和WSACleanup
由于Winsock在被调用时是以动态链接库Winsock.dll的形式实现的,所以在它初始化时应首先调用WSAStartup函数,对Winsock DLL进行初始化,确定被调用的Winsock的版本号,并以此分配必要的资源:int WSAStartup( __in WORD wVersionRequested, //用于存储要加载的Winsock库的版本;一般高位字节用于存储 //Winsock库的副版本,而低位字节则用来存储主版原创 2010-07-03 09:47:00 · 2955 阅读 · 0 评论 -
《Windows API巡礼》---sendto和recvfrom
<br />sendto函数用于将数据发送到指定的地址:<br />int sendto(<br /> __in SOCKET s, //指定套接字(可能已连接)<br /> __in constchar *buf, //指向将要发送数据的缓冲区<br /> __in int len, //缓冲区大小<br /> __in int flags, //指定数据传输方式<br /> __in conststruct sockaddr *to, //可选的指针,指向存储目标套接字地址信息的so原创 2010-07-03 15:20:00 · 6238 阅读 · 0 评论 -
《Windows API巡礼》---send和recv
<br />send函数用于在一个已经连接成功的socket上发送数据:<br />int send(<br /> __in SOCKET s, //已连接的套接字<br /> __in constchar *buf,//指向将要发送数据的缓冲区<br /> __in int len, //缓冲区数据的字节长度<br /> __in int flags //指定数据传输方式:0---无特殊行为;MSG_DONTROUTE---传输层不要将它发出的包<br />原创 2010-07-03 13:38:00 · 4432 阅读 · 0 评论 -
《Windows API巡礼》---listen、accept和connect
<br />listen函数是用来在socket服务器端将套接字置入监听模式并准备接受客户端连接请求:<br />int listen(<br /> __in SOCKET s, //一个已绑定但尚未连接的套接字<br /> __in int backlog //指定正在等待连接的最大队列长度。如果backlog为3,而有4个客户机<br /> //同时发出连接请求,则前3个放在等待队列中,最后一个将被忽略<br />);<br />返回值:<br />成功时,返回原创 2010-07-03 12:56:00 · 2948 阅读 · 0 评论 -
《Windows API巡礼》---socket和bind
<br />函数socket()可以创建一个socket对象:<br />SOCKET WSAAPI socket(<br /> __in int af, //协议的地址家族,在Windows操作系统中,取值只能是AF_INET<br /> //表示该套接字在Internet域中进行通信<br /> __in int type, //套接字类型,当af=AF_INET时只有3种取值:<br /> //SOCK_STREAM---TCP,原创 2010-07-03 10:50:00 · 3402 阅读 · 0 评论 -
《Windows API巡礼》---VirtualAlloc和VirtualFree
<br />进程的虚拟地址空间内存页面存在三种状态,分别是空闲的free、保留的reserved和提交的committed。多数情况下,一页大小是4KB:<br />空闲页面:进程不能访问此类页面,因为此类页面还没有被分配,任何属于这种页面的虚拟内存地址进行访问都将引发访问异常;<br />保留页面:页面被保留以备将来只用,此类页面已经被分配,但是还没有使用,物理地址空间中的内存中不存在其对应的物理内存分页。处理保留状态的内存分页也不能被访问;<br />提交页面:内存已经被分配,并且已经被使用,具有与之对原创 2010-07-01 15:37:00 · 3309 阅读 · 0 评论 -
《Windows API巡礼》---StringCbCopy和StringCchCopy
StringCbCopy函数用于拷贝string,且提供了目标缓冲区的大小作为参数,防止缓冲区溢出等安全问题。这个函数可用于替换以下函数的使用:strcpy, wcscpy, _tcscpylstrcpyStrCpyStringCbCopy函数原型如下:HRESULT StringCbCopy( __out LPTSTR pszDest, //目标字符串缓冲区 __in size_t cbDest, //目标缓冲区大小(字节),这个值必须考虑pszSrc加上空结束符’/0’的大小;原创 2010-06-29 10:00:00 · 4798 阅读 · 0 评论 -
《Windows API巡礼》--CreateRemoteThread和WriteProcessMemory
<br />CreateRemoteThread函数用于为指定进程创建线程,该线程将会在其他进程的地址空间中执行,访问其他进程的资源:<br />HANDLE WINAPI CreateRemoteThread(<br /> __in HANDLE hProcess, //需要为其创建线程的目标进程句柄,该目标进程需要具有如下权限:<br /> //PROCESS_CREATE_THREAD、PROCESS_QUERY_INFORMATION、原创 2010-07-01 13:45:00 · 2816 阅读 · 0 评论 -
《Windows API巡礼》---GetEnvironmentStrings和GetEnvironmentVariable
<br />环境变量是进程中一组变量信息,环境变量分为系统环境变量、用户环境变量和进程环境变量。系统有全局的环境变量,在进程创建时,进程继承了系统的全局环境变量、当前登录用户的用户环境变量和父进程的环境变量。进程也可以有自己的环境变量。<br />设置和获取所在进程的环境变量使用API函数GetEnvironmentStrings、GetEnvironmentVariable和SetEnvironmentVariable:<br />1)GetEnvironmentStrings函数用于获取所有环境变量字符原创 2010-07-01 09:31:00 · 7829 阅读 · 1 评论 -
《Windows API巡礼》之MultiByteToWideChar函数和WideCharToMultiByte函数
<br />我们一般使用Windows函数MultiByteToWideChar将多字节字符串转换为宽字符字符串,函数原型如下:<br />int MultiByteToWideChar(__in UINT CodePage, //与多字节字符串关联的一个代码页值,一般设为CP_ACP__in DWORD dwFlags, //指定额外的转换控制,一般为0__in LPCSTR lpMultiByteStr, //要转换的多字节字符串__in int cbMultiByte,原创 2010-12-23 19:58:00 · 2701 阅读 · 1 评论