谢谢!

解决方案 »

  1.   

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Threading ;
    using System.Diagnostics ;
    using Microsoft.Win32 ;
    using System.Text ;
    using System.Runtime.InteropServices ;
    namespace Server1
    {
    /// <summary>
    /// Form1 的摘要说明。
    /// </summary> public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.Timer timer1;
    private System.Windows.Forms.ListBox listBox1;
    private System.ComponentModel.IContainer components;
    public delegate bool EnumChildWindowsProc(IntPtr hwnd, long lParam);
    public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam); public Form1()
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent(); //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region Windows Form Designer generated code
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.components = new System.ComponentModel.Container();
    this.button1 = new System.Windows.Forms.Button();
    this.timer1 = new System.Windows.Forms.Timer(this.components);
    this.listBox1 = new System.Windows.Forms.ListBox();
    this.SuspendLayout();
    // 
    // button1
    // 
    this.button1.Location = new System.Drawing.Point(104, 128);
    this.button1.Name = "button1";
    this.button1.TabIndex = 0;
    this.button1.Text = "button1";
    this.button1.Click += new System.EventHandler(this.button1_Click);
    // 
    // timer1
    // 
    this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
    // 
    // listBox1
    // 
    this.listBox1.ItemHeight = 12;
    this.listBox1.Location = new System.Drawing.Point(120, 16);
    this.listBox1.Name = "listBox1";
    this.listBox1.Size = new System.Drawing.Size(120, 88);
    this.listBox1.TabIndex = 1;
    // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(292, 266);
    this.Controls.AddRange(new System.Windows.Forms.Control[] {
      this.listBox1,
      this.button1});
    this.Name = "Form1";
    this.Text = "Form1";
    this.Load += new System.EventHandler(this.Form1_Load);
    this.ResumeLayout(false); }
    #endregion /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    }
    private static void StartListening()
    {
    Process [] f=Process.GetProcesses();
    foreach (Process f2 in f)
    {
    if(f2.ProcessName.Equals("WSetValue")&&f2.MainWindowTitle.Equals("Form1"))
    {
    IntPtr hWndParent=f2.MainWindowHandle;
    EnumChildWindowsProc myEnumChild = new EnumChildWindowsProc(EumWinChiPro);
          try
                 {
                  EnumChildWindows(hWndParent,myEnumChild,0);
                 }
         catch(Exception){}
    }
    }
    } private void button1_Click(object sender, System.EventArgs e)
    {
    try
    {
    StartListening();
    //GetWindows();
    }
    catch(Exception){}
    } private void Form1_Load(object sender, System.EventArgs e)
    {

    } private void timer1_Tick(object sender, System.EventArgs e)
    {
    StartListening();
    }
    [DllImport("user32.dll")]
    public static extern long EnumChildWindows(IntPtr hWndParent, EnumChildWindowsProc lpEnumFunc,long lParam); 
    [DllImport("user32.dll")]
    public static extern long GetClassName(IntPtr hwnd,StringBuilder lpClassName,long nMaxCount);
    private static bool EumWinChiPro(IntPtr hWnd,long lParam)
    {
    StringBuilder s=new StringBuilder (256);
    GetClassName(hWnd,s,257);
    string ss=s.ToString ();
    ss=ss.Trim();
    MessageBox.Show(ss);
    return true;
    }
    }
    }
      

  2.   

    【C#声明】
    [DllImport("user32")]
    private static extern IntPtr EnumChildWindows (int hWndParent, int lpEnumFunc, int lParam);
    【参数】
    hWndParent -----  Long,欲枚举子窗口的父窗口的句柄  lpEnumFunc -----  Long,为每个子窗口调用的函数的指针。用AddressOf运算符获得函数在一个标准模块中的地址  lParam ---------  Long,在枚举期间,传递给dwcbkd32.ocx定制控件之EnumWindows事件的值。这个值的含义是由程序员规定的。(原文:Value
      that is passed to the EnumWindows event of the dwcbkd32.ocx custom control during
      enumeration. The meaning of this value is defined by the programmer.)【返回值】
    Long,非零表示成功,零表示失败【功能】
    为指定的父窗口枚举子窗口