进程窗口不会移动到其他监视器

时间:2014-04-15 16:18:54

标签: vb.net winforms process window screen

我按照this StackOverflow article中给出的建议移动一个进程,我开始向正在运行的Windows窗体对面的监视器。不幸的是它没有用。这里发生了什么:我调用Process.Start(),它打开一个TIF或PDF文件,其中包含用户对该图像类型的默认查看器。运行下面的代码时,图像查看器将:

1)从Windows窗体所在的窗口/监视器开始,什么都不做;或

2)从窗体对面的窗口开始,然后移动到窗体的监视器。

你可能会说,这与我希望实现的目标相反。如果观众在表格的同一个监视器中打开,我想将其移动到相反的形式;否则,不要移动它。

以下是我使用的代码。我无法说出我做错了什么,因为我似乎遵循文章和MSDN的指导原则。

    Dim path As String = _gridQueue.CurrentRow.Cells("Path").Value.ToString()
    Dim mainWindowHandle As Integer = 0

    Using p As Process = Process.Start(path)
        p.WaitForInputIdle()
        _processIds.Add(p.Id)
        mainWindowHandle = p.MainWindowHandle
    End Using

    ' Set window to second monitor.
    Dim currentMonitor As Screen = Screen.FromControl(Me)
    Dim otherMonitor As Screen = Nothing

    If (currentMonitor Is Screen.AllScreens(0)) Then
        otherMonitor = Screen.AllScreens(1)
    Else
        otherMonitor = Screen.AllScreens(0)
        currentMonitor = Screen.AllScreens(1)
    End If

    Dim area As Rectangle = otherMonitor.WorkingArea
    SetWindowPos(mainWindowHandle, CType(SpecialWindowHandles.HWND_TOP, IntPtr), otherMonitor.WorkingArea.Left, otherMonitor.WorkingArea.Top, area.Size.Width, area.Size.Height, SetWindowPosFlags.ShowWindow)

非常感谢任何帮助。感谢。

0 个答案:

没有答案