如题
[DllImport("User32.dll ", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll ", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); Process p = new Process();
p.StartInfo=new ProcessStartInfo("测试.exe");
p.Start(); ShowWindow(f.MainWindowHandle, 1);
MainWindowHandle不为0,但窗体居然没显示出来?后来小的用IntPtr handle = FindWindow(null,"测试");
发现handle与MainWindowHandle的值不一样?不是同一个东西?请问大侠这是怎么回事,我该怎么利用进程,把这个进程里的窗体show同来咯?
[DllImport("User32.dll ", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll ", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); Process p = new Process();
p.StartInfo=new ProcessStartInfo("测试.exe");
p.Start(); ShowWindow(f.MainWindowHandle, 1);
MainWindowHandle不为0,但窗体居然没显示出来?后来小的用IntPtr handle = FindWindow(null,"测试");
发现handle与MainWindowHandle的值不一样?不是同一个东西?请问大侠这是怎么回事,我该怎么利用进程,把这个进程里的窗体show同来咯?
/// <summary>
///
/// </summary>
/// <param name="lpClassName"></param>
/// <param name="lpWindowName"></param>
/// <returns></returns>
[DllImport("user32.dll", EntryPoint = "FindWindow")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
/// <summary>
///
/// </summary>
/// <param name="hwnd"></param>
/// <returns></returns>
[DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]
public static extern IntPtr SetForegroundWindow(IntPtr hwnd);写:
IntPtr Hander = FindWindow(null, "窗口标题");
if (Hander != IntPtr.Zero)
{
SetForegroundWindow(Hander);
}
/// 设置进程窗口置顶
/// </summary>
/// <param name="process"></param>
public static void SetProcessTopMost(Process process)
{
try
{
IntPtr handle = process.MainWindowHandle;
if (handle != null && handle != IntPtr.Zero)
{
IntPtr HWND_TOPMOST = new IntPtr(-1); //窗体置顶
IntPtr HWND_NOTOPMOST = new IntPtr(-2); //取消窗体置顶
uint SWP_NOMOVE = 0x0002; //不调整窗体位置
uint SWP_NOSIZE = 0x0001; //不调整窗体大小 SetWindowPos(handle, HWND_TOPMOST, 1, 1, 1, 1, SWP_NOMOVE | SWP_NOSIZE);
}
}
catch (Exception ex)
{ }
}
SetForegroundWindow
一起使用
主窗体的ShowInTaskBar = false
所以我的问题应该是在这个ShowInTaskBar = false的情况下,如何show出已知进程的主窗口。