各位老大,怎么获取一个窗体的句柄呀,比如QQ,我怎么才可以获取到,能否举一个列子,非常感谢。

解决方案 »

  1.   

    1、Findwindow API
    2、Process.MainWindowHandle
      

  2.   

    [DllImport("user32.dll", EntryPoint="FindWindowEx")]
    public static extern int FindWindowEx (
    int hWnd1,
    int hWnd2,
    string lpsz1,
    string lpsz2
    );
      

  3.   

    int i = FindWindowEx(0,0,"#32770",null);
    获得QQ消息窗口的句柄,消息窗口的类,应该是#32770,可以用spy++看看
      

  4.   

    using System.Diagnostics;Process process = null;
    Process[] pros = Process.GetProcessesByName("QQ");
    if(pros.Length > 0)
    {
    process = pros[0];
    }//句柄就是:
    process.MainWindowHandle;
      

  5.   

    应该说用FindWindow得到的窗口句柄更准确一些,process.MainWindowHandle可能会取得其他窗体(如登录框)的句柄!
      

  6.   

    int k;
    Process process = null;
    Process[] pros = Process.GetProcessesByName("QQ");
    if(pros.Length > 0)
    {
    process = pros[0];
    } //句柄就是:
        k=process.MainWindowHandle.ToInt32();
    //小弟菜,为什么每次取出来都是0啊
      

  7.   

    给我一个我程序中的例子:获得打开的excel的句柄
    private IntPtr _Handle;   //用于保存Excel的窗口句柄
    [DllImport("user32.dll")]
    public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);.......String WndClassCaption="Microsoft Excel - "+xlsName.Substring(xlsName.LastIndexOf (@"\")+1);
    IntPtr hwnd_win = FindWindow("XLMAIN", WndClassCaption);
    if(hwnd_win==IntPtr.Zero)
    {
    hwnd_win = FindWindow("MS-SDIa",xlsName.Substring(xlsName.LastIndexOf (@"\")+1));
    if(hwnd_win==IntPtr.Zero)
    {

    MessageBox.Show ("没找到窗口类   "+xlsName.Substring(xlsName.LastIndexOf (@"\")+1));
    return null;
    }
    }
    ////////XLMAIN,MS-SDIa 是用spy++看到的,QQ的方法同上!!!!!!!!!
      

  8.   

    >>>>>>>>>> Process[] pros = Process.GetProcessesByName("QQ");参数得用路进啊Process[] pros = Process.GetProcessesByName(@"D:/Tencent/QQ.exe");
      

  9.   

    操作系统是WINDOWS2003,取总是为0,郁闷。。
      

  10.   

    操作系统是WINDOWS2003,取出来总是0,郁闷,怎么办呀。。
      

  11.   

    qpl007(蓝色闪电)的Findwindow API
    应该可以的,再试试!
      

  12.   

    CSDN代码中心,有一个 QQ尾巴病毒模拟代码,你去看看  里面可以得到一点启发吧 C写的,不过很简单~
      

  13.   

    操作系统是WINDOWS2003,取出来总是0,郁闷,怎么办呀。。
      

  14.   

    [DllImport("User32.dll",EntryPoint="FindWindow")] 
    private static extern IntPtr FindWindow(string lpClassName, 
    string lpWindowName); string lpszParentWindow = "MU";   IntPtr ParenthWnd = new IntPtr(0); 
     
    ParenthWnd = FindWindow(null,lpszParentWindow);