Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将焦点设置到另一个窗口?_C#_Winforms - Fatal编程技术网

C# 如何将焦点设置到另一个窗口?

C# 如何将焦点设置到另一个窗口?,c#,winforms,C#,Winforms,我对一个失去焦点的程序有问题。这不是我的节目。如何编写第二个程序,每1-2秒将焦点设置到该窗口?有可能做到这一点吗?如果您想带来其他程序/进程,可以使用以下Win32 API [DllImport("user32.dll")] static extern bool SetForegroundWindow (IntPtr hWnd); private void BringToFront(Process pTemp) {

我对一个失去焦点的程序有问题。这不是我的节目。如何编写第二个程序,每1-2秒将焦点设置到该窗口?有可能做到这一点吗?

如果您想带来其他程序/进程,可以使用以下Win32 API

        [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的!