Tôi mở một notepad từ chương trình của mình bằng cách sử dụng Process.Start()
nhưng notepad mở mới bao gồm màn hình. Nhưng tôi muốn ứng dụng của mình duy trì trọng tâm của nó.Làm cách nào để đặt tiêu điểm trở lại biểu mẫu sau khi mở một quy trình (Notepad)?
tôi tương tự (sử dụng Process.Start cùng) mở ra MS Excel và Word nhưng để có được tập trung trở lại hình thức của tôi tất cả những gì cần phải viết là:
this.Focus();
Nhưng Quirk với Notepad: Tôi mở notepad (và tất cả các quá trình khác như thế này)
Process process = new Process();
process.StartInfo.UseShellExecute = true;
process.EnableRaisingEvents = true;
process.StartInfo.FileName = @"abc.log";
process.Start();
Bây giờ notepad lấy nét.
tôi đã cố gắng này:
this.Activate()
,this.Focus()
, không cần thiết phải đề cập đến[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] public static extern IntPtr SetFocus(HandleRef hWnd); { IntPtr hWnd = myProcess.Handle; SetFocus(new HandleRef(null, hWnd)); }
[DllImport("User32")] private static extern int SetForegroundWindow(IntPtr hwnd); [DllImportAttribute("User32.DLL")] private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); private const int SW_SHOW = 5; private const int SW_MINIMIZE = 6; private const int SW_RESTORE = 9; { ShowWindow(Process.GetCurrentProcess().MainWindowHandle, SW_RESTORE); SetForegroundWindow(Process.GetCurrentProcess().MainWindowHandle); }
Một giải pháp dài hơn nhận được từ here.
Tất cả vẫn tập trung vào notepad. Tại sao nó khó khăn như vậy để chỉ tập trung vào một cửa sổ, cửa sổ của chính ứng dụng quá đó?
EDIT: Tốt nhất là tôi có thể mở sổ ghi chú được thu nhỏ, nhưng nó vẫn không đưa tiêu điểm vào biểu mẫu sau khi thử tất cả các mã ở trên. Notepad mở ra tối thiểu, nhưng tập trung sẽ vẫn còn trên notepad (một cái gì đó mà đôi khi chúng ta thấy trong windows xp) và hình thức sẽ được ra khỏi tập trung.
Is it ok để bắt đầu cửa sổ ở trạng thái thu nhỏ? – NoviceProgrammer
Có, nó là ok, nhưng nó sẽ không hoạt động. Tôi sẽ cập nhật điều đó trong câu hỏi của tôi – nawfal
Bạn đã thử điều này chưa? http://stackoverflow.com/questions/2121911/starting-a-process-without-stealing-focus-c – NoviceProgrammer