C++Builder 窗口信息读取程序


  1 前言 
  我们经常会遇到很多界面十分漂亮的软件,我们在惊叹其作者高超水平的同时,心中也不禁会想:自己怎样才能作出这样的界面呢?本文就从设计一个窗口信息读取程序入手,利用C++Builder适合于快速开发的特点,详细的介绍了其实现过程。有了本程序,我们可以很轻松的去读取别人程序窗口中的各种信息,从中获取我们想要的信息。 
   
  2 相关知识 
  2.1 句柄 
  要想在程序中实现对其他程序窗口信息的读取,必须先获得对该窗口的控制权,在具体编程中,我们可以通过获取目标窗口的句柄来实现对该窗口的各种操作。那么,何为句柄呢?从数据类型上看句柄是一个无符号整数,Windows用它来标识窗体或其他对象,例如字体或位图。Windows分配给每个窗口一个唯一的句柄,通过句柄操纵该窗口。通俗地说,句柄就像一把扇子的柄,一扇门的把手,只有通过柄和把手,我们才能顺利地控制扇子和门。同理,当要操纵某一个窗口时,需要先获取该窗口的句柄。获取窗口句柄的函数很多,较为常用的一个是WindowFromPoint,其用途是返回指定坐标下窗口的句柄。该函数有一个参数,原型如下: 
  HWND WindowFromPoint ( 
  POINT Point // 指定的坐标(位置) 
  );//如果成功函数返回指定坐标下窗口的句柄,否则返回NULL 
  通过以上函数,我们可以获得目标窗口的句柄,以便我们通过句柄对窗口进行操纵,从而读取目标窗口的各种信息。 
  2.2 消息 
  消息(Message)就是指Windows操作系统发给应用程序的一个通知, 告诉应用程序某个事情发生了。从数据结构的角度看,消息是一个结构体,它包含了消息的类型标识符以及其他一些附加消息。这样,接受消息的对象就能根据这个消息的标识符知道系统中发生了什么事情,并利用其附加信息作出适当的反应。在本程序中,将使用到的消息有: 
  (1)WM_GETTEXTLENGTH 
   当程序向目标窗口发送此消息后,将得到与该目标窗口有关的文本的长度(不包含空字符) 。 
  (2)WM_GETTEXT 
   应用程序发送此消息来复制对应窗口的文本到缓冲区。 
  (3)LB_GETCOUNT和LB_GETTEXT 
   发送消息LB_GETCOUNT后可以获取目标窗口中ListBox中的项目总数,而消息LB_GETTEXT的作用为从该ListBox中得到某一条记录。 
  (4)CB_GETCOUNT 和CB_GETLBTEXT 
   作用同上, 可以获取目标窗口中ComboBox中的项目总数和其中某一条记录。 
  2.3 读取窗口各类信息时用到的函数 
  (1) GetWindowRect 
  该函数可获得整个窗口的矩形范围,原型如下: 
  BOOL GetWindowRect ( 
  HWND hWnd, // 欲获得矩形范围的那个窗口的句柄 
  LPRECT lpRect // 装载窗口矩形范围的坐标值 
  ); //成功返回非零,否则返回零 
  (2)GetClassName 
  函数取得指定窗口的类名,其原型为: 
  int GetClassName( 
  HWND hWnd, // 欲获得类名的那个窗口的句柄 
  LPTSTR lpClassName, // 存放类名的缓冲区 
  int nMaxCount // 缓冲区长度 
  ); //成功返回拷贝至缓冲区的类名,失败返回零 
  (3)GetWindowLong 
  函数的作用是从指定的窗口中获取信息,原型: 
  LONG GetWindowLong( 
  HWND hWnd, // 欲获取信息的窗口的句柄 
  int nIndex// 想要取回的信息,可以是下表中任何一个常数: 
  GWL_EXSTYLE//扩展窗口样式 GWL_STYLE 窗口样式 
  GWL_WNDPROC//该窗口的窗口函数的地址GWL_HINSTANCE拥有窗口的实例的句柄 
  GWL_HWNDPARENT//该窗口的父窗口句柄GWL_ID对话框中一个子窗口的标识符 
  GWL_USERDATA//含义由应用程序规定DWL_DLGPROC窗口的对话框函数地址 
  DWL_MSGRESULT //在对话框函数中处理的一条消息返回的值 
  DWL_USER //含义由应用程序规定 
  ); //函数返回值由参数nIndex来决定要返回哪个方面的当前值,若出错则返回0 
  (4)SendMessage 
  向窗口发送某一指定消息时用到此函数,函数的原型为: 
  LRESULT SendMessage( 
  HWND hWnd, // 目标窗口的句柄 
  UINT Msg, // 将要发送的消息 
  WPARAM wParam, // 消息第一个的参数 
  LPARAM lParam //消息的第二个参数 
  ); 
  (5)GetDC 
  获取指定窗口的设备场景,函数有一个参数,原型: 
  HDC GetDC( 
  HWND hWnd//将获取其设备场景的窗口句柄,若为0,表示要获取整个屏幕DC 
  ); //返回指定窗口的设备场景句柄,出错则为NULL 
  (6)GetPixel 
  GetPixel函数可获取指定坐标下的像素点的RGB颜色值。原型如下: 
  COLORREF GetPixel( 
  HDC hdc, //设备场景的句柄 
  int nXPos, //逻辑坐标(x坐标)中要检查的点 
  int nYPos //逻辑坐标(y坐标)中要检查的点 
  ); 
  (7)GetRValue 、GetGValue 、GetBValue 
  这3个函数分别得到颜色的红、绿、蓝分量值。 
   
  3 程序的实现及关键代码分析 
  以下是用C++ Builder6编写的程序代码,实现了对其他程序窗口信息的读取探测。 
  POINT pMouse; 
  char strClassName[255], strCaption[255]; // 定义存放窗口类名和窗口标题的变量 
  int strTextLength; // 文本长度 
  if(bMouseDown) // 如果按下了鼠标 
  {Memo1->Clear(); 
  GetCursorPos(&pMouse); // 得到鼠标当前坐标 
  hWnd =WindowFromPoint(pMouse); // 获取当前坐标下窗口的句柄 
  if (hWnd != NULL && hWnd != Handle 
  && !PtInRect(BoundsRect, pMouse) ) //目标窗口不能为本程序窗口 
  {// 获取鼠标当前位置 
  LabelMouse->Caption="鼠标位置:"+String(pMouse.x)+String(",")+pMouse.y; 

  // 在Edit中显示当前窗口的句柄(分别以16进制和十进制表示) 
 EditHandle->Text=IntToHex(int(hWnd), 8)+"("+int(hWnd)+")"; 
  // 获取窗口矩形范围 
  GetWindowRect(hWnd, &tRect); 
  EditRect->Text= String("(") + String(tRect.Left) + " ," + 
  String(tRect.Top) + ")-(" + String(tRect.Right) + 
  ","+String(tRect.Bottom)+")"+" "+String(tRect.Right-tRect.Left)+"x"+String(tRect.Bottom-tRect.Top); 
  // 在Edit中显示窗口的类名 
  GetClassName(hWnd, strClassName, 255); 
  EditClassName->Text= String(strClassName); 
  // 在Edit中显示窗口的标题 
  strTextLength=SendMessage(hWnd,WM_GETTEXTLENGTH, 0, 0); //获取文本长度 
  if(strTextLength>256) 
  strTextLength = 255; 
  if(strTextLength>0) 
  {SendMessage(hWnd,WM_GETTEXT,strTextLength+1, (LPAR 
  AM)&strCaption[0]); 
  // 发送WM_GETTEXT消息,读取其中的文本内容 
  EditCaption->Text= String(strCaption);} 
  else 
  EditCaption->Text = "无";// 判断是否为密码框,先获取窗口(控件)风格,再看是否有密码属性 
  if(ES_PASSWORD&GetWindowLong(hWnd,GWL_STYLE))// 具有密码属性 
  EditIsPsw->Text="是密码框"; 
  else 
  EditIsPsw->Text="(否)不是密码框"; 
  // 取 ListBox ,Memo 的内容 
  if(EditClassName->Text.Pos("ListBox")>0) 
  // 如果对象为ListBox 
  {Memo1->Clear(); 
  int iLBCount; 
  char strLBstr[255]; 
  // 发送LB_GETCOUNT消息,获取ListBox中的项目总数 
  iLBCount = SendMessage(hWnd, LB_GETCOUNT, 0, 0); 
  LabelCount->Caption="取得记录总数:"+String(iLBCount)+"条"; 
  for(int i = 0;i<ilbcount;i++)
  {//依次读取每一条记录,并显示在Memo中 
  SendMessage(hWnd, LB_GETTEXT, i, (LPARAM)strLBstr); 
  Memo1->Lines->Add(strLBstr); }} 
  if(EditClassName->Text.Pos("Memo")>0) // 如果对象为Memo 
  { LabelCount->Caption=""; 
  Memo1->Clear(); 
  int iTextLen; 
  iTextLen = SendMessage(hWnd,WM_GETTEXTLENGTH,0,0); 
  char strCBStr[65535]; 
  SendMessage(hWnd,WM_GETTEXT,iTextLen+1, (LPARAM)strCBStr); 
  Memo1->Lines->Add(strCBStr); } // 获取颜色 
  HDC hDC = GetDC(0); 
  COLORREF cl = GetPixel(hDC,pMouse.x,pMouse.y); 
  int R,G,B; 
  R = GetRValue(cl); 
  G = GetGValue(cl); 
  B = GetBValue(cl); 
  } //目标窗口不能为本程序窗口 
  } //if(bMouseDown) 
   
  4 结束语 
  本文在实现一个窗口信息读取程序的同时,详细介绍了其相关函数的功能和应用,并给出了相应的完整C++Builder源程序, 我们还可以在此程序基础上,通过一定的修改实现更加复杂的信息探测读取功能。本程序在C++Builder6.0+Windows XP环境下编译通过。在Windows XP\2000下测试良好。 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
含有全部工程文件,使用C++ Builder 6.0完成开发,可重新编译运行。创作权归曹润泽所有,使用者不可用于商业目的,否者后果自负。 本软件功能: 上层的应用软件的模块主要有:初始化模块、用户设置模块、COM串行通信数据采集模块、数据矫正模块、数据绘图模块、数据存储模块、网络传输模块、功能整合模块等。其中网络传输模块又可以根据工作模式分为服务端网络传输模块和客户端网络传输模块。 用户设置模块:主要是通过用户设置设置窗口中的信息来完成软件的设置,这些可以设置的变量都非常重要,包括基本设置:采样频率设置、COM端口选择、警告限设置(是否使用警戒限、高警戒限的大小、低警戒限的大小)、矫正表设置(是否使用矫正表、选择矫正表);绘图设置:显示点数设置、曲线宽度设置、曲线颜色设置(高警戒曲线的颜色、正常时曲线颜色、低警戒曲线的颜色设置);网络设置:是否使用网络传输、网络基本设置(服务端选择、客户端选择、端口号设置、服务端IP设置)。 COM串行通信数据采集模块:用于从串行口中读取数据。 本系统使用专门用于RS-232串行通信通信控制的控件TComm控件来完成COM通信。 数据矫正模块,顾名思义,是用于对数据进行矫正的。若需要矫正数据,必须使用矫正表,矫正表实际上只是个用户可自定义的文本文件,但在编写矫正表文件时必须按照一定规则进行编写。 数据绘图模块:对于采集数据的实时绘图是通过Borland C++ Builder 6.0自带的功能强大的TChart控件来实现。 数据存储模块:该模块除了使用了编译器所提供的几个基本数据类型之外,基本上是使用纯C++编写(不使用编译器的控件)。数据存储并未使用数据库存储,而是使用文本文件的方式对所有采集到的时间进行存储,存储时要先把采样信息写入到数据文件的头部,包括创建时间、采样起始时间、采样持续时间、采样结束时间、采样频率、采样数等等信息,之后就是所采集的数据,采样数据包括数值和采集的该点所对应的时间,以及该点是否被警告(过低用!Low表示、正常用-表示、过高用!High表示)。 网络传输模块:网络传输模块是本数据采集系统比较新颖的模块,可以使用互联网进行速率较低的数据传输,考虑到网络传输的延迟,故设计时设置的采样速率比较低。网络传输模块实际上是使用Socket编程实现的,在Borland C++ Builder中有封装好的用于网络通信的控件:TServerSocket和TClientSocket。
C++Builder精彩编程实例集锦的源代码(1,2,3部分): 第一部分 界面设计 实例001 如何实现程序闪屏效果 实例002 如何实现程序窗口闪烁 实例003 如何制作吸附窗口程序 实例004 如何制作透明程序窗口 实例005 如何制作半透明程序窗口 实例006 如何制作不规则程序窗口 实例007 如何制作程序渐变背景 实例008 如何设置程序背景图像 实例009 如何设置MDI程序背景图像 实例010 如何动态关闭MDI程序所有子窗口 实例011 如何去掉MDI程序窗口标题栏 实例012 如何拖动非标题栏区域移动窗口 实例013 如何控制程序最小化窗口 实例014 如何限制程序最大最小化窗口 实例015 如何控制程序窗口自动隐藏或显示 实例016 如何隐藏应用程序 实例017 如何控制程序在任务栏上是否出现 实例018 如何使一个程序在任务栏同时出现多个标题 实例019 如何使程序窗口总在最前面显示 实例020 如何隐藏应用程序标题栏 实例021 如何设置程序主标题 实例022 如何设置程序图标 实例023 如何在程序中改变菜单位置 实例024 如何删除程序系统关闭菜单 实例025 如何拷贝当前程序界面 实例026 如何动态创建程序表单 实例027 如何遍历窗体所有组件 实例028 如何保证组件位置相对固定 实例029 如何在窗体中动态增加组件 实例030 如何使组件在程序运行时可以移动 实例031 如何使用组件创建托盘程序 实例032 如何使用动画组件播放动画 实例033 如何在状态栏上加载进度条 实例034 如何在编辑框内显示图像 实例035 如何在列表框中增加水平滚动条 实例036 如何在列表框中同时显示图像和文字 实例037 如何设置属性表组件标签图像 实例038 如何控制Memo组件的文字边界 实例039 如何使用代码控制文字滚动 实例040 如何纵向显示字符串 实例041 如何旋转显示字符串 实例042 如何设置显示文字分辨率 第二部分 程序设置 实例043 如何使用消息框 实例044 如何显示简单关于对话框 实例045 如何在程序中增加热键 实例046 如何在程序中自定义消息 实例047 如何在程序中自定义系统菜单 实例048 如何在执行程序间进行数据通信 实例049 如何使用OLE技术启动画图 实例050 如何在程序中添加Word文档表格 实例051 如何在程序中设置Word文档的字体风格 实例052 如何使用Onldle事件 实例053 如何使程序在循环时响应外界事件 实例054 如何设置程序在系统启动时自动运行 实例055 如何创建多线程程序 实例056 如何创建可独立执行程序 实例057 如何编写单文档应用程序 实例058 如何编写多文档应用程序 实例059 如何编写COM服务器程序 实例060 如何编写COM客户端程序 实例061 如何编写DDE服务器程序 实例062 如何编写DDE客户端程序 实例063 如何编写DLL服务器程序 实例064 如何编写DLL客户端程序 实例065 如何注册DLL服务器程序 实例066 如何制作聊天服务器程序 实例067 如何制作聊天客户端程序 实例068 如何获取程序名称和路径 实例069 如何获取程序命令行参数 实例070 如何析取动态链接库中的图标 实例071 如何设置Edit组件的文本选择范围 实例072 如何将小写金额转换成大写金额 实例073 如何将全角字符串转换成半角字符串 实例074 如何按照指定的有效位数转换数字 实例075 如何获取汉字的拼音索引 实例076 如何设置输入方法 实例077 如何控制数据输入格式 实例078 如何控制编辑框中的输入法 实例079 如何设置回车键后的焦点 实例080 如何将项目保存到对象库 实例081 如何检测鼠标信息 实例082 如何读取鼠标信息 实例083 如何实现鼠标拖动操作 实例084 如何限制鼠标活动范围 实例085 如何读取键盘信息 第三部分 文件操作 实例086 如何复制文件 实例087 如何定制文件复制操作 实例088 如何更名文件 实例089 如何更改文件扩展名 实例090 如何删除文件 实例091 如何删除文件夹 实例092 如何选择文件夹 实例093 如何创建多层文件夹 实例094 如何自动获取文件夹和文件 实例095 如何搜索指定目录下的文件 实例096 如何搜索指定目录下的隐藏文件 实例097 如何搜索文本文件中的字符串 实例098 如何替换文本文件中的字符串 实例099 如何将长文件名转换为短文件名 实例100 如何在文件打开对话框中选择多个文件 实例101 如何定制文件打开和关闭对话框 实例102 如何修改文件打开对话框的按钮标题 实例103 如何使用查找与替换对话框 实例104 如何获取和设置当前目录 实例105 如何判断文件类型 实例106 如何获取系统所有文件类型 实例107 如何获取和设置文件属性 实例108 如何获取和设置文件时间属性 实例109 如何对文件名函数进行操作 实例110 如何读写文本文件 实例111 如何打印文本文件 实例112 如何创建特大型文件 实例113 如何制作临时文件 实例114 如何启动帮助文件 实例115 如何使用组件在主机问传送文件 实例116 如何对文件进行编码和解码 实例117 如何设置RichEdit组件的存盘格式 实例118 如何在WIN.INI文件中保存程序信息 实例119 如何将数据转换成Word文档格式 实例120 如何直接从Excel文件导入数据 实例121 如何直接将数据导入到Excel文件 实例122 如何发送电子邮件(一) 实例123 如何发送电子邮件(二)
第一部分 界面设计 实例001 如何实现程序闪屏效果 实例002 如何实现程序窗口闪烁 实例003 如何制作吸附窗口程序 实例004 如何制作透明程序窗口 实例005 如何制作半透明程序窗口 实例006 如何制作不规则程序窗口 实例007 如何制作程序渐变背景 实例008 如何设置程序背景图像 实例009 如何设置MDI程序背景图像 实例010 如何动态关闭MDI程序所有子窗口 实例011 如何去掉MDI程序窗口标题栏 实例012 如何拖动非标题栏区域移动窗口 实例013 如何控制程序最小化窗口 实例014 如何限制程序最大最小化窗口 实例015 如何控制程序窗口自动隐藏或显示 实例016 如何隐藏应用程序 实例017 如何控制程序在任务栏上是否出现 实例018 如何使一个程序在任务栏同时出现多个标题 实例019 如何使程序窗口总在最前面显示 实例020 如何隐藏应用程序标题栏 实例021 如何设置程序主标题 实例022 如何设置程序图标 实例023 如何在程序中改变菜单位置 实例024 如何删除程序系统关闭菜单 实例025 如何拷贝当前程序界面 实例026 如何动态创建程序表单 实例027 如何遍历窗体所有组件 实例028 如何保证组件位置相对固定 实例029 如何在窗体中动态增加组件 实例030 如何使组件在程序运行时可以移动 实例031 如何使用组件创建托盘程序 实例032 如何使用动画组件播放动画 实例033 如何在状态栏上加载进度条 实例034 如何在编辑框内显示图像 实例035 如何在列表框中增加水平滚动条 实例036 如何在列表框中同时显示图像和文字 实例037 如何设置属性表组件标签图像 实例038 如何控制Memo组件的文字边界 实例039 如何使用代码控制文字滚动 实例040 如何纵向显示字符串 实例041 如何旋转显示字符串 实例042 如何设置显示文字分辨率 第二部分 程序设置 实例043 如何使用消息框 实例044 如何显示简单关于对话框 实例045 如何在程序中增加热键 实例046 如何在程序中自定义消息 实例047 如何在程序中自定义系统菜单 实例048 如何在执行程序间进行数据通信 实例049 如何使用OLE技术启动画图 实例050 如何在程序中添加Word文档表格 实例051 如何在程序中设置Word文档的字体风格 实例052 如何使用Onldle事件 实例053 如何使程序在循环时响应外界事件 实例054 如何设置程序在系统启动时自动运行 实例055 如何创建多线程程序 实例056 如何创建可独立执行程序 实例057 如何编写单文档应用程序 实例058 如何编写多文档应用程序 实例059 如何编写COM服务器程序 实例060 如何编写COM客户端程序 实例061 如何编写DDE服务器程序 实例062 如何编写DDE客户端程序 实例063 如何编写DLL服务器程序 实例064 如何编写DLL客户端程序 实例065 如何注册DLL服务器程序 实例066 如何制作聊天服务器程序 实例067 如何制作聊天客户端程序 实例068 如何获取程序名称和路径 实例069 如何获取程序命令行参数 实例070 如何析取动态链接库中的图标 实例071 如何设置Edit组件的文本选择范围 实例072 如何将小写金额转换成大写金额 实例073 如何将全角字符串转换成半角字符串 实例074 如何按照指定的有效位数转换数字 实例075 如何获取汉字的拼音索引 实例076 如何设置输入方法 实例077 如何控制数据输入格式 实例078 如何控制编辑框中的输入法 实例079 如何设置回车键后的焦点 实例080 如何将项目保存到对象库 实例081 如何检测鼠标信息 实例082 如何读取鼠标信息 实例083 如何实现鼠标拖动操作 实例084 如何限制鼠标活动范围 实例085 如何读取键盘信息 第三部分 文件操作 实例086 如何复制文件 实例087 如何定制文件复制操作 实例088 如何更名文件 实例089 如何更改文件扩展名 实例090 如何删除文件 实例091 如何删除文件夹 实例092 如何选择文件夹 实例093 如何创建多层文件夹 实例094 如何自动获取文件夹和文件 实例095 如何搜索指定目录下的文件 实例096 如何搜索指定目录下的隐藏文件 实例097 如何搜索文本文件中的字符串 实例098 如何替换文本文件中的字符串 实例099 如何将长文件名转换为短文件名 实例100 如何在文件打开对话框中选择多个文件 实例101 如何定制文件打开和关闭对话框 实例102 如何修改文件打开对话框的按钮标题 实例103 如何使用查找与替换对话框 实例104 如何获取和设置当前目录 实例105 如何判断文件类型 实例106 如何获取系统所有文件类型 实例107 如何获取和设置文件属性 实例108 如何获取和设置文件时间属性 实例109 如何对文件名函数进行操作 实例110 如何读写文本文件 实例111 如何打印文本文件 实例112 如何创建特大型文件 实例113 如何制作临时文件 实例114 如何启动帮助文件 实例115 如何使用组件在主机问传送文件 实例116 如何对文件进行编码和解码 实例117 如何设置RichEdit组件的存盘格式 实例118 如何在WIN.INI文件中保存程序信息 实例119 如何将数据转换成Word文档格式 实例120 如何直接从Excel文件导入数据 实例121 如何直接将数据导入到Excel文件 实例122 如何发送电子邮件(一) 实例123 如何发送电子邮件(二) 第四部分 图像处理 实例124 如何浏览图像 实例125 如何滚动浏览大图像 实例126 如何拖动图像 实例127 如何动态显示图像 实例128 如何维护多个图像 实例129 如何绘制图形 实例130 如何以不规则方式裁剪图像 实例131 如何以任意角度旋转显示图像 实例132 如何在桌面上显示图像 实例133 如何拷贝当前屏幕 实例134 如何打印图像文件 实例135 如何制作马赛克图像 实例136 如何实现图像中心扩散效果 实例137 如何实现图像百叶窗效果 实例138 如何实现图像底片化效果 实例139 如何实现图像翻页效果 实例140 如何实现图像镜像效果 实例141 如何柔化处理图像 实例142 如何锐化处理图像 实例143 如何雾化处理图像 实例144 如何将彩色图像转换成黑白图像 实例145 如何将BMP图像文件转换为JPG图像文件 实例146 如何全屏播放AVI文件 实例147 如何制作媒体播放器 第五部分 系统编程 实例148 如何获取键盘类型 实例149 如何获取声卡配置 实例150 如何获取处理器信息 实例151 如何获取系统元素颜色 实例152 如何获取显示元素信息 实例153 如何获取系统支持的显示模式 实例154 如何动态设置系统的显示模式 实例155 如何获取内存空间信息 实例156 如何获取磁盘类型 实例157 如何获取磁盘卷信息 实例158 如何获取磁盘空间信息 实例159 如何在我的电脑中隐藏磁盘 实例160 如何隐藏系统任务栏 实例161 如何隐藏桌面图标 实例162 如何在桌面上创建快捷方式 实例163 如何获取和设置桌面墙纸 实例164 如何设置桌面墙纸显示方式 实例165 如何进行系统桌面切换 实例166 如何禁止系统屏幕保护程序 实例167 如何在程序中启动系统屏幕保护程序 实例168 如何在开始右键菜单中添加菜单项 实例169 如何清空系统回收站 实例170 如何删除文件到回收站 实例171 如何启动控制面板程序 实例172 如何在系统控制面板中添加项目 实例173 如何为计算机增加启动日志 实例174 如何获取操作系统的启动模式 实例175 如何变暗屏幕颜色 实例176 如何关闭计算机 实例177 如何禁止关闭Windows操作系统 实例178 如何修改IE浏览器的背景 实例179 如何在程序中控制IE窗口 实例180 如何使用默认浏览器打开指定网页 实例181 如何获取当前正在运行的程序 实例182 如何监视系统剪贴板变化 实例183 如何获取系统剪贴板的数据格式 实例184 如何设置系统日期 实例185 如何获取操作系统的产品序列号和产品名称 实例186 如何获取和设置鼠标双击响应速度 实例187 如何弹出和关闭光驱 实例188 如何检测网络连接 实例189 如何创建拨号网络 第六部分 数据库应用 实例190 如何创建不写代码的数据库程序 实例191 如何添加TDBNavigator组件的按钮功能 实例192 如何对数据库记录求和 实例193 如何对数据库记录求平均值 实例194 如何使用Locate方法查询数据库记录 实例195 如何查询固定范围的数据库记录 实例196 如何提高数据库应用程序查询效果 实例197 如何使用数据集的书签 实例198 如何浏览数据库中的图像 实例199 如何在删除数据库记录前给予提示 实例200 如何取得数据集的当前状态 实例201 如何创建主从关系的数据集 实例202 如何在一个数据集中浏览另一个数据集的数据 实例203 如何在数据库更新过程中增加事务操作 实例204 如何在程序中实现查找字段 实例205 如何在程序中实现自定义字段 实例206 如何使用字段拖放功能 实例207 如何为程序添加报表打印功能 实例208 如何使用向导创建打印报表 实例209 如何设置一对多数据库表 实例210 如何设置一对多报表打印功能 实例211 如何根据一对多数据库表绘制图形 实例212 如何根据数据库表显示饼图 实例213 如何根据数据库表绘制条形图 实例214 如何动态绘制数据库图表 实例215 如何设置多重群组的打印报表 实例216 如何编写商业决策分析程序 实例217 如何导出对象库中的商业决策分析程序 实例218 如何打印含有图像字段的数据库表 实例219 如何实现数据库表整表复制 实例220 如何实现数据库记录的批量删除 实例221 如何实现数据库记录的批量修改 实例222 如何使用SQL Builder工具创建SQL语句 实例223 如何在程序运行时指定SQL语句 实例224 如何在程序中创建并使用数据库 实例225 如何在程序中控制与数据库的连接 实例226 如何在程序中创建Access数据库ODBC数据源 实例227 如何在程序运行时创建数据库BDE别名 实例228 如何在安装程序中设置BDE引擎 实例229 如何消除MS-SQL Server数据库连接的登录框 实例230 如何连接MS-SQL Server数据库 实例231 如何连接MS-Access数据库 实例232 如何连接dBase数据库 实例233 如何使用ODBC连接Excel表 实例234 如何使用ADO操作Access数据库 实例235 如何定制DBGrid组件的列表头 实例236 如何统计DBGrid组件多选单元格 实例237 如何设置DBGrid组件指定单元格的颜色值 实例238 如何在DBGrid组件单元格中增加下拉菜单 实例239 如何定制StringGrid组件指定单元格的颜色 实例240 如何获取StringGrid组件鼠标指定单元格的值 实例241 如何使用StringGrid组件显示数据库查询结果 实例242 如何禁止数据控制组件与数据集组件同步刷新 实例243 如何把数据库表转换成文本文件 实例244 如何把数据库中的数据写入Word文档 实例245 如何设置数据库字段的输入显示格式 实例246 如何管理数据库程序的错误信息 实例247 如何获取数据库BDE别名 实例248 如何获取数据库BDE别名参数信息 实例249 如何获取数据库的工作目录 实例250 如何获取数据库驱动程序名称

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值