Bit*_*lue 5 c# console user-interface winapi focus
我有一个用黑色Windows控制台打开的C#控制台应用程序(A)。有时在启动时,它会从另一个需要焦点的程序(B)中抢走焦点。
问:我怎样才能给从焦点回到A.exe到B.exe?
A -> Focus -> B
Run Code Online (Sandbox Code Playgroud)
// this should do the trick....
[DllImport("user32.dll")]
public static extern bool ShowWindowAsync(HandleRef hWnd, int nCmdShow);
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr WindowHandle);
public const int SW_RESTORE = 9;
private void FocusProcess(string procName)
{
Process[] objProcesses = System.Diagnostics.Process.GetProcessesByName(procName);
if (objProcesses.Length > 0)
{
IntPtr hWnd = IntPtr.Zero;
hWnd = objProcesses[0].MainWindowHandle;
ShowWindowAsync(new HandleRef(null,hWnd), SW_RESTORE);
SetForegroundWindow(objProcesses[0].MainWindowHandle);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1468 次 |
| 最近记录: |