我有一个用VB.net编写的应用程序在Windows 7上运行,它打开一个word文档并在其中插入一些值。这工作正常,但在我的客户端的机器上(开发工作正常)Word在我的应用程序后面开放。我已经尝试在代码中最大化文档,但它仍然在客户端计算机上打开我的应用程序。有谁知道如何解决这个问题?
我已经尝试过的事情:
答案 0 :(得分:1)
您是否尝试过最小化应用程序,而不是最大化文档?
Me.WindowState = FormWindowState.Minimized
将最小化调用它的表单(假设您正在使用表单应用程序)。
答案 1 :(得分:0)
您可能需要将Word带到最前沿。这与将应用中的表单放到顶部有点不同。
您需要引用两个API, FindWindow 和 SetWindowPos - 第一个可以找到正在运行的另一个应用程序的Windows句柄,以及秒向操作系统发送一条消息,给予应用程序焦点(它使用FindWindow的Windows句柄)
以下是一些示例代码。
Public Class Form1
<Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True, CharSet:=Runtime.InteropServices.CharSet.Auto)> _
Private Shared Function FindWindow(ByVal lpClassName As String, _
ByVal lpWindowName As String) As IntPtr
End Function
<Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True)> _
Private Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As Integer) As Boolean
End Function
Private Shared ReadOnly HWND_TOPMOST As New IntPtr(-1)
Private Shared ReadOnly HWND_NOTOPMOST As New IntPtr(-2)
Private Const SWP_NOSIZE As Integer = &H1
Private Const SWP_NOMOVE As Integer = &H2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Shell("calc.exe")
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim myHandle As IntPtr = FindWindow(Nothing, "Calculator")
SetWindowPos(myHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
SetWindowPos(myHandle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
End Sub
End Class
单击第一个按钮将实例化一个Calculator副本,第二个按钮将使其最顶层,然后将其设置回正常...所以它仍然是最顶层的形式,但用户也可以激活其他窗口。