怎么获取一个窗体的句柄? 各位老大,怎么获取一个窗体的句柄呀,比如QQ,我怎么才可以获取到,能否举一个列子,非常感谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、Findwindow API2、Process.MainWindowHandle [DllImport("user32.dll", EntryPoint="FindWindowEx")]public static extern int FindWindowEx ( int hWnd1, int hWnd2, string lpsz1, string lpsz2); int i = FindWindowEx(0,0,"#32770",null);获得QQ消息窗口的句柄,消息窗口的类,应该是#32770,可以用spy++看看 using System.Diagnostics;Process process = null;Process[] pros = Process.GetProcessesByName("QQ");if(pros.Length > 0){ process = pros[0];}//句柄就是:process.MainWindowHandle; 应该说用FindWindow得到的窗口句柄更准确一些,process.MainWindowHandle可能会取得其他窗体(如登录框)的句柄! int k; Process process = null; Process[] pros = Process.GetProcessesByName("QQ"); if(pros.Length > 0) { process = pros[0]; } //句柄就是: k=process.MainWindowHandle.ToInt32();//小弟菜,为什么每次取出来都是0啊 给我一个我程序中的例子:获得打开的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的方法同上!!!!!!!!! >>>>>>>>>> Process[] pros = Process.GetProcessesByName("QQ");参数得用路进啊Process[] pros = Process.GetProcessesByName(@"D:/Tencent/QQ.exe"); 操作系统是WINDOWS2003,取总是为0,郁闷。。 操作系统是WINDOWS2003,取出来总是0,郁闷,怎么办呀。。 qpl007(蓝色闪电)的Findwindow API应该可以的,再试试! CSDN代码中心,有一个 QQ尾巴病毒模拟代码,你去看看 里面可以得到一点启发吧 C写的,不过很简单~ 操作系统是WINDOWS2003,取出来总是0,郁闷,怎么办呀。。 [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); DevExpress 中的RadioGroup WPF问题 关于windows服务的问题 数据库里的 DateTime类型的字段怎么插入空值?? 菜鸟问题,关于事件 C#/.net中如何登录后查看自己在数据库里的信息? ext js 通过onclick=""方法打开一个窗体 谁能提供一个控件类似于word中的表格,某几行的某几列可合并??? 马上要做毕业设计了,能不能介绍什么网站可以找些C#有关数据库的,谢谢! C#设置打印机首选项 简单的字符串处理问题,急!!! 关于远程建表问题
2、Process.MainWindowHandle
public static extern int FindWindowEx (
int hWnd1,
int hWnd2,
string lpsz1,
string lpsz2
);
获得QQ消息窗口的句柄,消息窗口的类,应该是#32770,可以用spy++看看
Process[] pros = Process.GetProcessesByName("QQ");
if(pros.Length > 0)
{
process = pros[0];
}//句柄就是:
process.MainWindowHandle;
Process process = null;
Process[] pros = Process.GetProcessesByName("QQ");
if(pros.Length > 0)
{
process = pros[0];
} //句柄就是:
k=process.MainWindowHandle.ToInt32();
//小弟菜,为什么每次取出来都是0啊
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的方法同上!!!!!!!!!
应该可以的,再试试!
private static extern IntPtr FindWindow(string lpClassName,
string lpWindowName); string lpszParentWindow = "MU"; IntPtr ParenthWnd = new IntPtr(0);
ParenthWnd = FindWindow(null,lpszParentWindow);