我似乎无法在Google或StackOverflow上找到答案.
如何在后台启动进程(在活动窗口后面)?就像,当进程启动时,它不会中断用户正在使用的当前应用程序.
该过程不会在当前应用程序前弹出,它只会启动.
这就是我正在使用的:
Process.Start(Chrome.exe);
Run Code Online (Sandbox Code Playgroud)
当应用程序启动时,Chrome会在我的应用程序前弹出.如何让它在后台启动?
我也尝试过:
psi = new ProcessStartInfo ("Chrome.exe");
psi.UseShellExecute = true;
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.WindowStyle = ProcessWindowStyle.Minimized;
Process.Start(psi);
Run Code Online (Sandbox Code Playgroud)
但是与前一个完全没有区别.
谢谢.
我在 .Net 中有用户控制权,我在 WndProc 中使用命中测试来允许在运行时用鼠标调整它的大小。
问题是在命中测试成功(鼠标按下、拖动以调整大小、鼠标释放)之后,控件在 Z 顺序中向上跳跃并破坏了它在表单中的位置。
我需要命中测试,因为它是一个非常定制的控件。
WndProc 有没有办法阻止控件改变它的 Z 顺序?
谢谢。
命中测试代码:
protected override void WndProc(ref Message m) {
if (!DesignMode && Sizeable && (m.Msg == Win32Wrapper.WM_NCHITTEST)) {
Point Hit = new Point((int)m.LParam & 0xFFFF, (int)m.LParam >> 16);
Hit = this.PointToClient(Hit);
int DistToBorder = 5;
if (Hit.X < DistToBorder) {
if (Hit.Y < DistToBorder) {
m.Result = (IntPtr)Win32Wrapper.HTTOPLEFT;
return;
}
if (Hit.Y > this.ClientRectangle.Bottom - DistToBorder) {
m.Result = (IntPtr)Win32Wrapper.HTBOTTOMLEFT;
return;
}
m.Result = (IntPtr)Win32Wrapper.HTLEFT;
return;
} …Run Code Online (Sandbox Code Playgroud) 我需要控制主窗口的 z-order 可以这么说。总是在最前面不是我的情况。我想把我的窗口放在所有其他窗口和桌面之上。是否可以?是否有类似于 C++ SetWindowPos 的函数?或者也许是一些解决方法?