程序调试常用API

来源:互联网 发布:网络剧推荐 编辑:程序博客网 时间:2024/06/06 08:44

 

 

  Windows程序模块包括KERNEL、USER和GDI,其中KERNEL完成内存管理、程序的装人与执行和任务调度等功能,它需要调用原MS―DOS中的文件管理、磁盘输入输出和程序执行等功能;

  USER是一个程序库,它用来对声音、时钟、鼠标器及键盘输入等操作进行管理;

  GDI是一功能十分丰富的子程序库,它提供了图形与文字输出、图象操作和窗口管理等各种与显示和打印有关的功能。

  上述KERNEL、USER和GDI模块中的库函数可被应用程序调用,也可被其他程序模块调用。把包含库函数的模块称为输出者(export)。

  这里列出几个经常碰到的Win 32 API函数,它们都是存在Windows系统核心文件KERNEL32.DLL中和视窗管理文件USER32.DLL中。

  Windows函数是区分字符集的:A表示ANSI,W表示Wide,即Unicode (Wide character-set),前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。Windows的所有与字符有关的函数都提供两种方式的版本。尽管你编程时使用GetWindowText,但实际上编译程序会根据设置自动调用GetWindowTextA或GetWindowTextW。函数的最后一个字母告诉我们函数是使用单字节还是双字节字符串。

1、 Hmemcpy函数

  void hmemcpy(hpvDest, hpvSource, cbCopy) 

  void _huge* hpvDest; // 目的数据地址 

  const void _huge* hpvSource; // 源数据地址 

  long cbCopy; // 数据大小 (Bytes) 

  这个函数在KERNEL32.DLL中,它很常用,俗称万能断点,但一般的编程书籍上很少提到,原因它是底层的东西,没有特殊需要,一般不直接调用。但的确它是很有用的!有意思的是它执行的操作很简单,只是将内存中的一块数据拷贝到另一个地方。

  注意:此函数只在Windows 9x系统上有效,在Win NT/2K系统上相关的函数是memcpy,但在Win NT/2K上不同于Windows 9x上,很少再调用memcpy来处理数据了,用此函数设断基本上什么也拦不住。

2、 GetWindowText函数

  此函数在USER32.DLL用户模块中,它的作用是复制指定窗口中的字符到缓冲区。函数原型:

  int GetWindowText(

  HWND hWnd//欲获取文字的那个窗口的句柄 

  LPTSTR lpString //预定义的一个缓冲区,至少有cch+1个字符大小;随同窗口文字载入 

  int nMaxCount//lpString缓冲区的长度

  );

  16位:GetWindowText

  32位:GetWindowTextA,GetWindowTextW

3、 GetDlgItemText

  此函数在USER32.DLL用户模块中,它的作用是返回对话框中某一个窗口的标题或文字。函数原型:

  UINT GetDlgItemText(

  HWND hDlg, // 对话框句柄

  int nIDDlgItem, //控制标识符

  LPTSTR lpString, / 预定义的一个字符缓冲区

  int nMaxCount// 字符缓冲区的长度

  );

  16位:GetDlgItemText

  32位:GetDlgItemTextA,GetDlgItemTextW

4、 MessageBox函数

  此函数是在USER32.DLL用户模块中,它的作用创建、显示和操作信息框。函数原型:

  int MessageBox(

  HWND hWnd, //窗口句柄

  LPCTSTR lpText, // 信息框中文字的地址

  LPCTSTR lpCaption, // 信息框标题地址

  UINT uType // 信息框类型

  );

  16位:MessageBox

  32位:MessageBoxA,MessageBoxW

 

原创粉丝点击