如题,找到别的windows窗口,根据名称找,就行

解决方案 »

  1.   

    用这个api。本身不知道如何做。
      

  2.   

    using System.Runtime.InteropServices;[DllImport("user32.dll", EntryPoint="FindWindow")]
    public static extern int FindWindow(string lpClassName, string lpWindowName);
      

  3.   

    直接调用api是可以的,在c#里不清楚。
      

  4.   

    C#一样可以调用FindWindow函数,然后将返回的窗口句柄保存在一个Intptr型变量中
      

  5.   

    还有SetTimer?我就用这3个函数,不好意思哈,呵呵,下次问问题,一定一次吐完
      

  6.   

    另外得到的IntPtr怎么用呢?比如:IntPtr hw = Findwindow(); hw.SetWindowText();好像不可以阿
      

  7.   

    C#也可以使用FINDWINDOWS这个API的、
      

  8.   

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Runtime.InteropServices;namespace FindWin
    {
    /// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
    [DllImport("user32.dll", EntryPoint="FindWindow")]
    public static extern IntPtr FindWindow (
    string lpClassName,
    string lpWindowName
    ); private System.Windows.Forms.Button button1;
    private System.Windows.Forms.TextBox textBox1;
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null; 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 窗体设计器生成的代码
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.button1 = new System.Windows.Forms.Button();
    this.textBox1 = new System.Windows.Forms.TextBox();
    this.SuspendLayout();
    // 
    // button1
    // 
    this.button1.Location = new System.Drawing.Point(176, 22);
    this.button1.Name = "button1";
    this.button1.Size = new System.Drawing.Size(64, 24);
    this.button1.TabIndex = 0;
    this.button1.Text = "Find";
    this.button1.Click += new System.EventHandler(this.button1_Click);
    // 
    // textBox1
    // 
    this.textBox1.Location = new System.Drawing.Point(16, 24);
    this.textBox1.Name = "textBox1";
    this.textBox1.Size = new System.Drawing.Size(152, 21);
    this.textBox1.TabIndex = 1;
    this.textBox1.Text = "textBox1";
    // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(256, 273);
    this.Controls.Add(this.textBox1);
    this.Controls.Add(this.button1);
    this.Name = "Form1";
    this.Text = "FindWin";
    this.ResumeLayout(false); }
    #endregion /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    } private void button1_Click(object sender, System.EventArgs e)
    {
    IntPtr handle=FindWindow(null,this.textBox1.Text);
    MessageBox.Show(Convert.ToString((int)handle,16));
    }
    }
    }
    源码考过去。编译一下试试。就知道了。
      

  9.   

    我刚才这样稿了findwindow("","HeHeWindow");所以没找到窗口,呵呵,那么SetTimer和KillTimer的函数在C#里面怎么写呢?
      

  10.   

    [DllImport("user32.dll", EntryPoint="SetTimer")]
    public static extern int SetTimer (
    int hWnd,
    int nIDEvent,
    int uElapse,
    int lpTimerFunc
    );
    [DllImport("user32.dll", EntryPoint="KillTimer")]
    public static extern int KillTimer (
    int hwnd,
    int nIDEvent
    );
      

  11.   

    FindWindows的第一个参数是类名。这个你可以用SPY++得到。你不知道这个自然要NULL啦。
    对了建议是使用API eXPLORER.网上有下载的。
      

  12.   

    哈哈,不用搞的那么复杂,
    控件都有一个方法找到它所在的窗口,即
    FindForm()