知人網

隱藏ACCESS系統界面的方法

為使基於ACCESS開發的數據庫看起來更像是獨立的應用程序,嘗試採用彈出窗口+隱藏ACCESS主界面的方法實現。

窗口的彈出方式可直接通過ACCESS設計模式下的屬性表設置。在屬性表中,“所選內容的類型”選擇窗體,“其他”選項卡中將彈出方式設置為“是”,這樣,該窗體將以彈出窗口的形式啟動。屬性表中的“模式”表示窗體是否被獨佔,當為“是”時,當前窗口被獨佔,只能操作當前窗口,而不能操作ACCESS主界面的其他菜單;當為“否”時,可繞過當前窗口操作ACCESS主界面的其他菜單。

隱藏ACCESS主界面需利用代碼生成器編寫代碼實現。以下代碼為網絡搜索結果。

Option Compare Database

Option Explicit

   '定義窗體各種顯示模式對應的數值,SW_HIDE等均為系統規定標示符  
   Const SW_HIDE = 0                              
   
Const SW_SHOWNORMAL = 1
   Const SW_SHOWMINIMIZED = 2
   Const SW_SHOWMAXIMIZED = 3

Private Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long  
'連接user32庫,以調用系統中的apiShowWindow方法

Function fSetAccessWindow(nCmdShow As Long)  
'定義fSetAccessWindow函數,nCmdShow值將決定窗口的顯示模式

Dim loX  As Long

    loX = apiShowWindow(hWndAccessApp, nCmdShow)  
    '調用apiShowWindow方法,其中hWndAccessApp為窗口句柄,以識別Access主界面

End Function

Private Sub Form_Load()        
'在窗體的加載屬性中調用定義好的fSetAccessWindow()函數,並將()中的數值傳遞給apiShowWindow,由apiShowWindow完成控制窗體大小、是否顯示

fSetAccessWindow (SW_SHOWMINIMIZED)
End Sub

將這段代碼放入窗體的“事件——加載”屬性中,則該窗體在啟動時,將自動隱藏ACCESS主界面。

目前待解的問題是,我將這段代碼貼入登陸窗體中,啟動登陸窗體時,ACCESS主界面的確被隱藏,但登陸後跳轉到自設的導航窗體時,導航窗體和ACCESS主界面全部被隱藏。懷疑是apiShowWindow(hWndAccessApp, nCmdShow)方法中的hWndAccessApp窗口句柄並不能準確識別ACCESS主窗體,待解。

目前的替代措施時改用以下代碼,將ACCESS主界面最小化:

 Private Sub Form_Load()
   DoCmd.RunCommand acCmdAppMinimize
 End Sub