C# 如何将焦点设置到另一个窗口?
我对一个失去焦点的程序有问题。这不是我的节目。如何编写第二个程序,每1-2秒将焦点设置到该窗口?有可能做到这一点吗?如果您想带来其他程序/进程,可以使用以下Win32 APIC# 如何将焦点设置到另一个窗口?,c#,winforms,C#,Winforms,我对一个失去焦点的程序有问题。这不是我的节目。如何编写第二个程序,每1-2秒将焦点设置到该窗口?有可能做到这一点吗?如果您想带来其他程序/进程,可以使用以下Win32 API [DllImport("user32.dll")] static extern bool SetForegroundWindow (IntPtr hWnd); private void BringToFront(Process pTemp) {
[DllImport("user32.dll")]
static extern bool SetForegroundWindow (IntPtr hWnd);
private void BringToFront(Process pTemp)
{
SetForegroundWindow(pTemp.MainWindowHandle);
}
使用spy++或其他ui工具查找要聚焦的窗口的类名,例如:focusWindowClassName。然后添加以下功能:
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[System.Runtime.InteropServices.DllImport("User32.dll")]
public static extern bool ShowWindow(IntPtr handle, int nCmdShow);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
//Then:
// [Edit] Changed IntPrt to IntPtr
IntPtr hWnd = FindWindow("focusWindowClassName", null); // this gives you the handle of the window you need.
// then use this handle to bring the window to focus or forground(I guessed you wanted this).
// sometimes the window may be minimized and the setforground function cannot bring it to focus so:
/*use this ShowWindow(IntPtr handle, int nCmdShow);
*there are various values of nCmdShow 3, 5 ,9. What 9 does is:
*Activates and displays the window. If the window is minimized or maximized, *the system restores it to its original size and position. An application *should specify this flag when restoring a minimized window */
ShowWindow(hWnd, 9);
//The bring the application to focus
SetForegroundWindow(hWnd);
// you wanted to bring the application to focus every 2 or few second
// call other window as done above and recall this window again.
你是说你想让焦点每秒钟在你的程序和另一个第二个程序之间切换?或者在您的应用程序中,您希望每2秒将另一个程序带到前面(以防它再次回到后面)?它是一个程序(不同的程序进程)还是您的子窗体?它的不同程序,我希望我的程序只将它放在焦点上…在Windows上,您应该使用
user32.dll
,因为coredll.dll
是针对Windows Mobile的!