VB6窗口操作

 '  
  '窗口操作(SmWinCtrl)  
  '  
   
  Option   Explicit  
   
  Private   Const   HWND_TOP   =   0  
  Private   Const   HWND_BOTTOM   =   1  
  Private   Const   HWND_TOPMOST   =   -1  
  Private   Const   HWND_NOTOPMOST   =   -2  
   
  Private   Const   SWP_NOSIZE   =   &H1  
  Private   Const   SWP_NOMOVE   =   &H2  
  Private   Const   SWP_NOZORDER   =   &H4  
  Private   Const   SWP_NOREDRAW   =   &H8  
  '/*以下常数在   ShowWindow中应用*  
  Private   Const   SW_SHOWMAXIMIZED   =   3  
  Private   Const   SW_HIDE   =   0  
  Private   Const   SW_MINIMIZE   =   6  
  Private   Const   SW_RESTORE   =   9  
  Private   Const   SW_SHOW   =   5  
  Private   Const   SW_SHOWMINIMIZED   =   2  
  Private   Const   SW_SHOWMINNOACTIVE   =   7  
  Private   Const   SW_SHOWNA   =   8  
  Private   Const   SW_SHOWNOACTIVATE   =   4  
  Private   Const   SW_SHOWNORMAL   =   1  
  '/====================================  
  '/隐藏窗口,活动状态给令一个窗口  
  '/     SW_HIDE  
  '/     最小化窗口,活动状态给令一个窗口  
  '/     SW_MINIMIZE  
  '/   用原来的大小和位置显示一个窗口,同时令其进入活动状态  
  '/     SW_RESTORE  
  '/用当前的大小和位置显示一个窗口,同时令其进入活动状态  
  '/     SW_SHOW  
  '/     最大化窗口,并将其激活  
  '/   SW_SHOWMAXIMIZED  
  '/     最小化窗口,并将其激活  
  '/     SW_SHOWMINIMIZED  
  '/     最小化一个窗口,同时不改变活动窗口  
  '/     SW_SHOWMINNOACTIVE  
  '/     用当前的大小和位置显示一个窗口,不改变活动窗口  
  '/   SW_SHOWNA  
  '/   用最近的大小和位置显示一个窗口,同时不改变活动窗口  
  '/   SW_SHOWNOACTIVATE  
  '/     与SW_RESTORE相同  
  '/SW_SHOWNORMAL  
  Private   Const   xMenuID   =   10&  
  Private   Const   WM_NCACTIVATE   =   &H86  
  '/********************************************  
  '/MENU   ID  
  Private   Const   SC_RESTORE   =   &HF120&     '还原  
  Private   Const   SC_MOVE   =   &HF010&   '移动  
  Private   Const   SC_SIZE   =   &HF000&   '大小  
  Private   Const   SC_MINIMIZE   =   &HF020&   '缩到最小  
  Private   Const   SC_MAXIMIZE   =   &HF030&   '放到最大  
  Private   Const   SC_CLOSE   =   &HF060&   '关闭  
  '/********************************************  
   
  Private   Const   MIIM_STATE   =   &H1&  
  Private   Const   MIIM_ID   =   &H2&  
   
  Private   Const   MFS_GRAYED   =   &H3&  
  Private   Const   MFS_CHECKED   =   &H8&  
   
  Private   Type   MENUITEMINFO  
          cbSize   As   Long  
          fMask   As   Long  
          fType   As   Long  
          fState   As   Long  
          Wid   As   Long  
          hSubMenu   As   Long  
          hbmpChecked   As   Long  
          hbmpUnchecked   As   Long  
          dwItemData   As   Long  
          dwTypeData   As   String  
          cch   As   Long  
  End   Type  
   
  Private   Declare   Function   GetSystemMenu   Lib   "user32"   (ByVal   hWnd   As   Long,   ByVal   bRevert   As   Long)   As   Long  
  Private   Declare   Function   GetMenuItemInfo   Lib   "user32"   Alias   "GetMenuItemInfoA"   (ByVal   hMenu   As   Long,   ByVal   un   As   Long,   ByVal   B   As   Boolean,   lpMenuItemInfo   As   MENUITEMINFO)   As   Long  
  Private   Declare   Function   SetMenuItemInfo   Lib   "user32"   Alias   "SetMenuItemInfoA"   (ByVal   hMenu   As   Long,   ByVal   un   As   Long,   ByVal   bool   As   Boolean,   lpcMenuItemInfo   As   MENUITEMINFO)   As   Long  
           
  '/--------------------------------------------------  
  '/为窗口指定一个新位置和状态  
  Private   Declare   Function   SetWindowPos   Lib   "user32"   (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  
   
   
  '/控制窗口的可见性  
  Private   Declare   Function   ShowWindow   Lib   "user32"   _  
                                                              (ByVal   hWnd   As   Long,   _  
                                                              ByVal   nCmdShow   As   Long)   As   Long  
  '/恢复一个最小化的程序,并将其激活  
  Private   Declare   Function   OpenIcon   Lib   "user32"   (ByVal   hWnd   As   Long)   As   Long  
  '/将输入焦点移到指定的窗体(必须与调用者同一线程)  
  Private   Declare   Function   SetFocus   Lib   "user32"   (ByVal   hWnd   As   Long)   As   Long  
  '/激活指定窗口(必须与调用者同一线程)  
  Private   Declare   Function   SetActiveWindow   Lib   "user32"   (ByVal   hWnd   As   Long)   As   Long  
  '/获取前台窗口或者聚焦窗口的句柄  
  Private   Declare   Function   GetForegroundWindow   Lib   "user32"   ()   As   Long  
   
  '/===============================================================================  
  '/取窗口标题  
  Private   Declare   Function   GetWindowText   Lib   "user32"   Alias   "GetWindowTextA"   _  
                                                                                                            (ByVal   hWnd   As   Long,   _  
                                                                                                            ByVal   lpString   As   String,   _  
                                                                                                            ByVal   cch   As   Long)   As   Long  
  '/设置窗口标题  
  Private   Declare   Function   SetWindowText   Lib   "user32"   Alias   "SetWindowTextA"   _  
                                                                                                              (ByVal   hWnd   As   Long,   _  
                                                                                                                ByVal   lpString   As   String)   As   Long  
  '/将窗口放在前台  
  Private   Declare   Function   SetForegroundWindow   Lib   "user32"   (ByVal   hWnd   As   Long)   As   Long  
  '/向窗口发送消息  
  Private   Declare   Function   SendMessage   Lib   "user32"   Alias   "SendMessageA"   _  
                                                          (ByVal   hWnd   As   Long,   ByVal   wMsg   As   Long,   _  
                                                          ByVal   wParam   As   Long,   lParam   As   Any)   As   Long  
  '/----------------------------------------------------------------------  
  '/关闭一个窗口  
  '/HWND   要关闭的窗口的句柄  
  '/返回值     如果非零,则成功,否则失败  
  Private   Declare   Function   DestroyWindow   Lib   "user32"   (ByVal   hWnd   As   Long)   As   Long  
   
  '/为窗体指定一个新父  
  '/自身的HWND,新父的HWND.  
  Private   Declare   Function   SetParent   Lib   "user32"   (ByVal   HwndChild   As   Long,   ByVal   HWndNewParent   As   Long)   As   Long  
   
  '  
  '设置窗口为最顶层  
  '函数:SetTopWindow  
  '参数:Winwnd   要设置为最顶层窗口的HWND  
  '返回值:  
  '例子:  
  Public   Function   SetTopWindow(WinWnd   As   Long)  
                SetWindowPos   WinWnd,   HWND_TOPMOST,   0,   0,   0,   0,   SWP_NOSIZE   Or   SWP_NOMOVE  
  End   Function  
   
  Public   Function   MoveWindow(WinHwnd   As   Long,   X   As   Long,   Y   As   Long)  
                SetWindowPos   WinHwnd,   HWND_NOTOPMOST,   X,   Y,   0,   0,   SWP_NOSIZE   Or   SWP_NOMOVE  
  End   Function   
     '  
  '将窗口位于Z轴方向的最前.  
  '函数:SetTopWindowZ  
  '参数:MWinwnd   要设置为Z轴最前窗口的HWND  
  '返回值:  
  '例子:  
  Public   Function   SetTopWindowZ(MWinWnd   As   Long)  
      Dim   WinHwnd   As   Long  
      WinHwnd   =   GetForegroundWindow()  
      If   WinHwnd   <>   MWinWnd   And   WinHwnd   <>   0   Then  
            SetWindowPos   WinHwnd,   HWND_TOP,   0,   0,   0,   0,   SWP_NOSIZE   Or   SWP_NOMOVE  
      End   If  
  End   Function  
   
  '  
  '将最顶层窗口恢复为正常  
  '函数:NoTopWindow  
  '参数:Winwnd   要恢复窗口的HWND  
  '返回值:  
  '例子:  
  Public   Function   NoTopWindow(WinWnd   As   Long)  
                SetWindowPos   WinWnd,   HWND_NOTOPMOST,   0,   0,   0,   0,   SWP_NOSIZE   Or   SWP_NOMOVE  
  End   Function  
   
  '  
  '将焦点移到指定的窗体上  
  '函数:SetWinFocus  
  '参数:hWnd   操作窗口HWND  
  '返回值:  
  '例子:  
  Public   Sub   SetWinFocus(hWnd   As   Long)  
                Call   SetFocus(hWnd)  
  End   Sub  
   
  '  
  '无关闭按钮.  
  '函数:NoClose  
  '参数:FHwnd   操作窗口HWND  
  '返回值:  
  '例子:  
  Public   Function   NoClose(FHwnd   As   Long)  
          Dim   hMenu   As   Long,   MII   As   MENUITEMINFO  
           
          hMenu   =   GetSystemMenu(FHwnd,   0)  
          MII.cbSize   =   Len(MII)  
          MII.dwTypeData   =   String(80,   0)  
          MII.cch   =   Len(MII.dwTypeData)  
          MII.fMask   =   MIIM_STATE  
          MII.Wid   =   SC_CLOSE  
          GetMenuItemInfo   hMenu,   SC_CLOSE,   False,   MII  
          MII.Wid   =   xMenuID  
          MII.fMask   =   MIIM_ID  
          SetMenuItemInfo   hMenu,   SC_CLOSE,   False,   MII  
          MII.fState   =   MII.fState   Or   MFS_GRAYED  
          MII.fMask   =   MIIM_STATE  
          SetMenuItemInfo   hMenu,   MII.Wid,   False,   MII  
          SendMessage   FHwnd,   WM_NCACTIVATE,   True,   ByVal   0&  
  End   Function  
   
  '  
  '无最小化按钮  
  '函数:NoMin  
  '参数:FHwnd   操作窗口HWND  
  '返回值:  
  '例子:  
  Public   Function   NoMin(FHwnd   As   Long)  
          Dim   hMenu   As   Long,   MII   As   MENUITEMINFO  
          hMenu   =   GetSystemMenu(FHwnd,   0)  
          MII.cbSize   =   Len(MII)  
          MII.dwTypeData   =   String(80,   0)  
          MII.cch   =   Len(MII.dwTypeData)  
          MII.fMask   =   MIIM_STATE  
          MII.Wid   =   SC_MINIMIZE  
          GetMenuItemInfo   hMenu,   SC_MINIMIZE,   False,   MII  
          MII.Wid   =   xMenuID  
          MII.fMask   =   MIIM_ID  
          SetMenuItemInfo   hMenu,   SC_MINIMIZE,   False,   MII  
          MII.fState   =   MII.fState   Or   MFS_GRAYED  
          MII.fMask   =   MIIM_STATE  
          SetMenuItemInfo   hMenu,   MII.Wid,   False,   MII  
          SendMessage   FHwnd,   WM_NCACTIVATE,   True,   ByVal   0&  
  End   Function  
   
  '  
  '无最大化按钮.  
  '函数:NoMax  
  '参数:FHwnd   操作窗口HWND  
  '返回值:   
'例子:  
  Public   Function   NoMax(FHwnd   As   Long)  
          Dim   hMenu   As   Long,   MII   As   MENUITEMINFO  
          hMenu   =   GetSystemMenu(FHwnd,   0)  
          MII.cbSize   =   Len(MII)  
          MII.dwTypeData   =   String(80,   0)  
          MII.cch   =   Len(MII.dwTypeData)  
          MII.fMask   =   MIIM_STATE  
          MII.Wid   =   SC_RESTORE  
          GetMenuItemInfo   hMenu,   SC_RESTORE,   False,   MII  
          MII.Wid   =   xMenuID  
          MII.fMask   =   MIIM_ID  
          SetMenuItemInfo   hMenu,   SC_RESTORE,   False,   MII  
          MII.fState   =   MII.fState   Or   MFS_GRAYED  
          MII.fMask   =   MIIM_STATE  
          SetMenuItemInfo   hMenu,   MII.Wid,   False,   MII  
          SendMessage   FHwnd,   WM_NCACTIVATE,   True,   ByVal   0&  
  End   Function

不要看6分这么贵,下载后等10分钟评价+5星即可返还你的积分!! 这个模块是楼主花了几年时间积累维护而成,对于操作windows窗口非常方便,让你脱身于一大堆api函数 ,可以非常自如地操作windows窗口。 例如网页自动上传文件自动操作很多人可能会困惑。那个打开的windows对话框,怎样自动写入路径然后 再点打开呢??使用我们的框架可以轻而易举的实现,而且非常精准,即使最小化非焦点窗口也可以执行 。 因为并非使用的按键精灵那样固定位置坐标点击按钮什么的技术,我们的是全api架构操作。 注意下载后评论+五星评价可返还你的分数!!如果觉得实在6分委屈了可以搜楼主发布的初版,版本升级 一个就加一分的,你可以下载V1.1的那个是1分,V1.6的就是6分!! '=================================================================================== '描 述:一个操作windows窗口的类,可对窗口进行很多常用的操作(clsWindow.cls) '使用范例:Dim window As New clsWindow ' window.getWindowHwndByTitle "计算器" ' window.closeWindow '编 程:sysdzw 原创开发,如果有需要对模块扩充或更新的话请邮箱发我一份,共同维护 '发布日期:2013/06/01 '博 客:http://hi.baidu.com/sysdzw 'Email :sysdzw@163.com 'QQ :171977759 '版 本:V1.0 初版 2012/12/03 ' V1.1 修正了几个正则相关的函数,调整了部分类结构 2013/05/28 ' V1.2 增加属性Caption,可以获取或设置当前标题栏 2013/05/29 ' V1.3 增加了方法Focus,可以激活当前窗口 2013/06/01 ' 增加了方法Left,Top,Width,Height,Move,处理窗口位置等 ' V1.4 增加了窗口位置调整的几个函数 2013/06/04 ' 增加了得到应用程序路径的函数AppName ' 增加了得到应用程序启动参数的函数AppCommandLine ' V1.5 增加了窗口最大最小化,隐藏显示正常的几个函数 2013/06/06 ' 增加了获取控件相关函数是否使用正则的参数UseRegExp默认F ' V1.6 将Left,Top函数改为属性,可获得可设置 2013/06/10 '===================================================================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值