我在自己的程序中打开第三方的程序,如果第三方程序没有最大化时,当激我的程序窗体时,我的程序就自动显示在第三方程序窗体的前面了。现在我想让自己的程序始终居于所有第三方程序的后面。怎样实现呢?

解决方案 »

  1.   

    Private Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
      

  2.   

    SetWindowPos VB声明 
    Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long 
    说明 
    这个函数能为窗口指定一个新位置和状态。它也可改变窗口在内部窗口列表中的位置。该函数与DeferWindowPos函数相似,只是它的作用是立即表现出来的(在vb里使用:针对vb窗体,如它们在win32下屏蔽或最小化,则需重设最顶部状态。如有必要,请用一个子类处理模块来重设最顶部状态 
    返回值 
    Long,非零表示成功,零表示失败。会设置GetLastError 
    参数表 
    参数 类型及说明 
    hwnd Long,欲定位的窗口 
    hWndInsertAfter Long,窗口句柄。在窗口列表中,窗口hwnd会置于这个窗口句柄的后面。也可能选用下述值之一: 
    HWND_BOTTOM 将窗口置于窗口列表底部 
    HWND_TOP 将窗口置于Z序列的顶部;Z序列代表在分级结构中,窗口针对一个给定级别的窗口显示的顺序 
    HWND_TOPMOST 将窗口置于列表顶部,并位于任何最顶部窗口的前面 
    HWND_NOTOPMOST 将窗口置于列表顶部,并位于任何最顶部窗口的后面 
    x Long,窗口新的x坐标。如hwnd是一个子窗口,则x用父窗口的客户区坐标表示 
    y Long,窗口新的y坐标。如hwnd是一个子窗口,则y用父窗口的客户区坐标表示 
    cx Long,指定新的窗口宽度 
    cy Long,指定新的窗口高度 
    wFlags Long,包含了旗标的一个整数 
    SWP_DRAWFRAME 围绕窗口画一个框 
    SWP_HIDEWINDOW 隐藏窗口 
    SWP_NOACTIVATE 不激活窗口 
    SWP_NOMOVE 保持当前位置(x和y设定将被忽略) 
    SWP_NOREDRAW 窗口不自动重画 
    SWP_NOSIZE 保持当前大小(cx和cy会被忽略) 
    SWP_NOZORDER 保持窗口在列表的当前位置(hWndInsertAfter将被忽略) 
    SWP_SHOWWINDOW 显示窗口 
    SWP_FRAMECHANGED 强迫一条WM_NCCALCSIZE消息进入窗口,即使窗口的大小没有改变 
    注解 
    窗口成为最顶级窗口后,它下属的所有窗口也会进入最顶级。一旦将其设为非最顶级,则它的所有下属和物主窗口也会转为非最顶级。Z序列用垂直于屏幕的一根假想Z轴量化这种从顶部到底部排列的窗口顺序
      

  3.   

    如果用这个函数打开其它程序,那么该函数可以定义被打开的程序的Z顺序ShellExecute VB声明 
    Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long 
    说明 
      查找与指定文件关联在一起的程序的文件名 
    返回值 
    Long,非零表示成功,零表示失败。会设置GetLastError 
    参数表 
    参数 类型及说明 
    hwnd Long,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框 
    lpOperation String,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它 
    lpFile String,想用关联程序打印或打开一个程序名或文件名 
    lpParameters String,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数 
    lpDirectory String,想使用的完整路径 
    nShowCmd Long,定义了如何显示启动程序的常数值。参考ShowWindow函数的nCmdShow参数 
     
    ShowWindow VB声明 
    Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long 
    说明 
    控制窗口的可见性(在vb里使用:针对vb窗体及控件,请使用对应的vb属性) 
    返回值 
    Long,如窗口之前是可见的,则返回TRUE(非零),否则返回FALSE(零) 
    参数表 
    参数 类型及说明 
    hwnd Long,窗口句柄,要向这个窗口应用由nCmdShow指定的命令 
    nCmdShow Long,为窗口指定可视性方面的一个命令。请用下述任何一个常数 
    SW_HIDE 隐藏窗口,活动状态给令一个窗口 
    SW_MINIMIZE 最小化窗口,活动状态给令一个窗口 
    SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态 
    SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态 
    SW_SHOWMAXIMIZED 最大化窗口,并将其激活 
    SW_SHOWMINIMIZED 最小化窗口,并将其激活 
    SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口 
    SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口 
    SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口 
    SW_SHOWNORMAL 与SW_RESTORE相同