易截截图软件、单文件、免安装、纯绿色、仅160KB

c#利用winapi遍历桌面控件算法

public enum GUIInfoType
{
     guiText.
     guiTextClass,
     guiTextParent,
     guiTextClassParent,
}
private static int level=0
public static int FindGUILike(ref int hWndArray,int hWndStart,ref string windowText,ref string className,ref string parentText)
{
int hwnd=0;
int r=0;
StringBuilder sWindowText=new StringBuilder();
StringBuilder sClassname=new StringBuilder();
StringBuilder sParentText=new StringBuilder();
if(level==0)
{
  hWndTarget=0;
  if(hWndTarget==0) hWndStart = GetDesktopWindow();
}
level=level+1;
hwnd=GetWindow(hWndStart,GW_CHILD);
while(hwnd!=0)
{
   r=FindGUILike(ref hWndArray,hwnd windowText,ref classname,ref parentText);
   sWindowText.Capacity=255;
   r=GetClassName(hwnd,sWindowsText,255);
  sClassname.Capacity=255;
  r=GetWindowText(GetParent(hwnd),sParentText,225);
  GUIInfoType guiInfoType=GetGUIInfoType(windowText,className,parentText);
  ResetGUIInfo(guiInfoType,hwnd,ref hWndArray,ref windowText,ref className,ref parentText,sWindowText,sClassname,sParentText);
  hwnd=GetWindow(hwnd,GW_HWNDNEXT);
}
level=level-1;
return 0;
}
private static GUIInfoType GetGUIInfoType(string winText,string winClass,string winTextParent)
{
  if(winText!=''&&winClass!=''&winTextParent=='')
    return GUIInfoType.guiTextClass;
  else if(winText!=''&&winClass==''&winTextParent!='')
   return GUIInfoType.guiTextParent;
  else if(winText!=''&&winClass!=''&winTextParent=='')
    return GUIInfoType.guiClassParent;
  return GUIInfoType.guiText;
}
private static void ResetGUIInfo(GUIInfoType guiInfoType,int hwnd,ref int hWndTarget,ref string windowText,ref string className,ref string parentText,StringBuilder sParentText)
{
  string clsStartedWith='';
  if(clas


相关文档:

C#与Flash交互

C#与Flash交互 (转自小磊在线)
C#与Flash交互
前段日子公司要求做一个C#与Flash交互的东西,用来C#与短信猫通讯将数据传到Flash上显示与操作的应用。
第一步C#添加组件
打开VS2005-工具-选择工具箱项-COM组件-选择Shockwave Flash Object-确定
添加好组件往场景上拖放,如果提示注册需求注册
c# 注册控件-在运行输 ......

C# 通过ado.net 访问oracle

1.安装ODP(oracle data provider)
2.然后在项目中引用 Oracle.DataAccess程序集
3.接着
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
4.然后编写程序和ado.net方位sqlserver 差别不大了,就是利用下面的对象进行编程,当然,因为oracle和sqlserver有很多地方不一样,所以细节存在很大差异。
O ......

在Asp.net(C#) 中使用 ReportViewer

a. ReportViewer关联Report1.rdlc的简单呈现
b. 对带有报表参数的Report1.rdlc的呈现
c.
利用程式生成的DataSet 填充报表
d. 调用存储过程 生成DataSet 填充报表
==========
简单的呈现
==========
1. 打开VS2005,文件->新建->网站 选择语言种类(C#)
2. 在该解决方案下
设计其已经生成的Default.aspx ......

C# 事件与委托趣谈

事件与委托似乎很难以理解,这是因为它们的使用方式与常用的编码有很大的差别,例如通常编写的都是同步代码,调用一个类型的方法,会即刻出现方法执
行的结果,这是符合逻辑的。但在某些情况中,同步代码未必满足需求,拿公共汽车来打个比方,如果交通管制中心希望每一辆公车到达一个站点时都发送给自己一
个信号以便自己 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号