Presentation is loading. Please wait.

Presentation is loading. Please wait.

講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所.

Similar presentations


Presentation on theme: "講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所."— Presentation transcript:

1 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所
Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所

2 第十八章 呼叫Windows API

3 Windows API 一堆以C語言寫成的函式庫, 功能強大, 應有盡有 Windows作業系統的一部份 透過API與O.S 溝通

4 Application Programming Interface
應用程式 Application Programming Interface O.S Hardware

5 Where is Windows API 在作業系統的動態連結程式庫 (*.DLL) EX: Gdi32.dll 圖形周邊設備介面 API
Netapi32.dll 32位元網路 API Winmm.dll Windows多媒體 API

6 宣告 API 函式 Declare Function VB函式 Lib “DLL名” [Alias “API函式名”] (參數列) As 傳回值型態 Declare Sub VB函式 Lib “DLL名” [Alias “API函式名”] (參數列)

7 宣告 API 函式(cont’d) Declare Function HideCaret Lib “user32” Alias “HideCaret” (ByVal hwnd as Long) As Long Dim x as Integer x=HideCaret(text1.hwnd)

8 宣告 API 函式(cont’d) 使用API檢視員 檔案/載入文字檔, 選取WIN32API.TXT (加快)將文字檔轉換成資料庫格式
API 類型宣告(Declares) 型態(Types) 常數(Constants)

9

10 範例一:取消關閉視窗功能 GetSystemMenu DeleteMenu

11 範例一:取消關閉視窗功能(cont’d)
Public Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (ByVal hwnd As Long, ByVal bRevert As Long) As Long Public Declare Function DeleteMenu Lib "user32" Alias "DeleteMenu" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long

12 範例一:取消關閉視窗功能(cont’d)
Private Const MF_BYCOMMAND = &H0& Public Const MF_BYPOSITION = &H400&  Private Const SC_MAXIMIZE = &HF030  Private Const SC_RESTORE = &HF120 Private Const SC_SIZE = &HF000 Private Const SC_MOVE = &HF010 Private Const SC_MINIMIZE = &HF020 Private Const SC_CLOSE = &HF060

13 範例一:取消關閉視窗功能(cont’d)
Dim hMenu As Long, Success As Long  hMenu = GetSystemMenu(Me.hWnd, 0)  '禁止還原按鈕 Success = DeleteMenu(hMenu, SC_RESTORE, MF_BYCOMMAND)  '禁止改變大小 Success = DeleteMenu(hMenu, SC_SIZE, MF_BYCOMMAND)  '禁止最大化 Success = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)  '禁止最小化 Success = DeleteMenu(hMenu, SC_MINIMIZE, MF_BYCOMMAND)  '禁止關閉 Success = DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)  '禁止移動 Success = DeleteMenu(hMenu, SC_MOVE, MF_BYCOMMAND) 

14 範例二:圖形介面功能表 利用API檢視員加入GetMenu, GetSubMenu, GetMenuItemId, SetMenuItemBitMaps, MF_BITMAP, and MF_BYPOSITION

15 範例二:圖形介面功能表(cont’d) Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long Private Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long Private Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long Private Const MF_BITMAP = &H4& Private Const MF_BYPOSITION = &H400&

16 範例二:圖形介面功能表(cont’d) Dim hMenu, hSubMenu, MenuId As Long
Dim Pic(3) As Picture Private Sub Form_Load() Set Pic(0) = LoadPicture(App.Path & "\01.bmp") Set Pic(1) = LoadPicture(App.Path & "\02.bmp") hMenu = GetMenu(Me.hwnd) hSubMenu = GetSubMenu(hMenu, 0) SetMenuItemBitmaps hSubMenu, 2, MF_BYPOSITION, Pic(0).Handle, 0 SetMenuItemBitmaps hSubMenu, 3, MF_BYPOSITION, Pic(0).Handle, Pic(1).Handle End Sub

17 範例二:圖形介面功能表 Private Sub mm3_Click() mm3.Checked = True End Sub

18 範例三:得知已開機時間 GetTickCount
Private Declare Function GetTickCount Lib "kernel32" () As Long Private Sub Command1_Click() MymSec = GetTickCount() MyDay = MymSec \ MyHour = MymSec \ Mod 24 MyMin = MymSec \ Mod 60 MySec = MymSec \ 1000 Mod 60 MsgBox "已經開機:" & MyDay & "天 " & MyHour & "小時 " & MyMin & "分 " & MySec & "秒" End Sub

19 範例四:清除資源回收桶 SHEmptyRecycleBinA SHEmptyRecycleBin 0, vbNullstring, 0
Declare Function SHEmptyRecycleBin Lib "shell32.dll" Alias "SHEmptyRecycleBinA" (ByVal hWnd As Long, ByVal pszRootPath As String, ByVal flags As Long) As Long SHEmptyRecycleBin 0, vbNullstring, 0 SHEmptyRecycleBin 0, "E:\", 0

20 範例四:清除資源回收桶(cont’d) Flags 1:不要清除的對話框 2:不顯示刪除進行對畫框 4:不發出資源回收統刪除事件的聲音。


Download ppt "講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所."

Similar presentations


Ads by Google