我按照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)
非常感谢任何帮助。感谢。