【问题标题】:How can i bring a process handle window to front but in normal size not maximize?我怎样才能将进程句柄窗口放在前面但在正常大小下不能最大化?
【发布时间】:2015-07-09 15:17:17
【问题描述】:

在我的班级中名列前茅:

    [DllImport("USER32.DLL")]
    public static extern bool SetForegroundWindow(IntPtr hWnd);
    [DllImport("User32.dll")]
    private static extern bool ShowWindow(IntPtr handle, int nCmdShow);
    private const int SW_SHOWMAXIMIZED = 3;

然后在一个方法中:

public static void BringToFront(IntPtr handle)
        {
            if (handle == IntPtr.Zero)
                return;

            // Maximize window
            ShowWindow(handle, SW_SHOWMAXIMIZED);

            SetForegroundWindow(handle);
        }

但我不希望它最大化,而是正常大小。

编辑

这是有效的。

在表格1中:

Process[] processes = Process.GetProcessesByName(processName);
SetProcessWindow.BringToFront(processes[0].Id);
SetProcessWindow.CenterProcessWindow(processes[0].Id);

在课堂上:

public static void BringToFront(int processId)
        {
            Process process = Process.GetProcessById(processId);
            IntPtr handle = process.MainWindowHandle;

            if (handle == IntPtr.Zero)
                return;

            ShowWindow(handle, SW_SHOWNORMAL);
            SetForegroundWindow(handle);
        }

【问题讨论】:

  • 你可以使用 SW_SHOWNORMAL = 1;而不是 SW_SHOWMAXIMIZED
  • 试过 SW_SHOWNORMAL = 1;它没有显示任何东西。根本没有把窗户带到前面。还尝试了 2 没有 3 最大化也 4 最大化。奇怪的是 SW_SHOWNORMAL = 1;不起作用。
  • 也许你可以在这里找到有用的东西stackoverflow.com/questions/13468331/…

标签: c# .net winforms


【解决方案1】:

使用 SW_SHOW = 5 而不是 SW_SHOWMAIXMIZED。

顺便说一句,this was the first link 当我搜索 SW_SHOWMAXIMIZED.... 时,我得锻炼一下那些研究肌肉!

【讨论】:

  • 现在也试过了,它根本没有把窗口带到前面。
猜你喜欢
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多