API函數(shù)在VB中得到了充分的運(yùn)用,同時(shí)也讓無數(shù)VB愛好者沉溺于其中。以下是筆者幾年來收集整理的幾十個(gè)API函數(shù)在VB中應(yīng)用的實(shí)例,現(xiàn)在寫出來與大伙分享,希望能對(duì)大伙有所幫助。 1、如何讓窗體總在最前面? ' API函數(shù)聲明 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 Const SWP_NOSIZE = &H1 Private Const SWP_NOMOVE = &H2 Private Const HWND_TOPMOST = -1 Private Const HWND_NOTOPMOST = -2 ' 在某個(gè)form里寫: SetWindowPos me.hWnd,WND_TOPMOST,0,0,0,0, SWP_NOMOVE ' 或下面 SetWindowPos me.hWnd,WND_TOPMOST,0,0,0,0, SWP_NOSIZE 2、使用API函數(shù)sendmessage,獲得光標(biāo)所在行和列。 Sub getcaretpos(byval TextHwnd&,LineNo&,ColNo&) ' TextHwnd為TextBox的hWnd屬性值 ' LineNo為所在行數(shù) ' ColNo為列數(shù) dim i&,j&,k& ' 獲取起始位置到光標(biāo)所在位置字節(jié)數(shù) i=SendMessage(TextHwnd,&HB0&,0,0) j=i/2^16 ' 確定所在行 LineNo=SendMessage(TextHwnd,&HC9&,j,0)+1 ' 確定所在列 k=SendMessage(TextHwnd,&HBB&,-1,0) ColNo=j-k+1 End sub 3、如何以某種顏色填充某區(qū)域? ' API函數(shù)聲明 Private Declare Sub FloodFill Lib "gdi32" _ (ByVal hDC As Long, ByVal X As Long, ByVal Y As _ Long, ByVal crColor As Long ' 設(shè)(fillx,filly)為此區(qū)域內(nèi)任一點(diǎn) ' Color為某種顏色 FloodFill Picture1.hDC, fillx, filly,Color 4、如何關(guān)閉計(jì)算機(jī)? ' API函數(shù)聲明 Declare Function ExitWindows Lib "User" (ByVal dwReturnCode As Long, ByVal wReserved As Integer) As Integer ' 執(zhí)行 Dim DUMMY DUMMY=ExitWindows(0,0) 5、如何獲取Windows目錄和System目錄? ' 復(fù)制以下代碼到一模塊中 Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Public Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long ' 在程序中調(diào)用 Dim WindowsDirectory As String, SystemDirectory As String, x As Long WindowsDirectory = Space(255) SystemDirectory = Space(255) x = GetWindowsDirectory(WindowsDirectory, 255) x = GetSystemDirectory(SystemDirectory, 255) MsgBox "Windows的安裝目錄是:" + WindowsDirectory+",系統(tǒng)目錄是:" + SystemDirectory 6、如何建立簡單的超級(jí)連接? ' API函數(shù)聲明 Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecute A" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd A s Long) As Long ' 打開某個(gè)網(wǎng)址 ShellExecute 0, "open", "http://tyvb.126.com", vbNullString, vbNullString, 3 ' 給某個(gè)信箱發(fā)電子郵件 ShellExecute hwnd, "open", "mailto:sst95@21cn.com", vbNullString, vbNullString, 0 7、如何得知TextBox中文字所有的行數(shù)? ' API函數(shù)聲明 Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Public Const EM_GETLINECOUNT = &HBA ' 在程序中調(diào)用 LineCnt = SendMessage(ctl.hwnd, EM_GETLINECOUNT, 0, 0) ' LineCnt即為此TextBox的行數(shù)。 8、如何設(shè)置ListBox的水平卷動(dòng)軸的寬度? ' API函數(shù)聲明 Const LB_SETHORIZONTALEXTENT = &H194 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 ' 調(diào)用 Call SendMessage(List1.hwnd, LB_SETHORIZONTALEXTENT, 400, ByVal 0&) ' 注意400是以象素為單位,你可以根據(jù)情況自行設(shè)定。 9、如何交換鼠標(biāo)按鍵? ' API函數(shù)聲明 Declare Function SwapMouseButton& Lib "user32" _ (ByVal bSwap as long) ' 要交換鼠標(biāo)按鍵,將bSwap參數(shù)設(shè)置為True。要恢復(fù)正常設(shè)置,將bSwap設(shè)置為False。 然后調(diào)用函數(shù)就可以交換和恢復(fù)鼠標(biāo)按鍵了。 10、如何讓窗體的標(biāo)題條閃爍以引起用戶注意? ' 在窗體中放一個(gè)Timer控件Timer1,設(shè)置其Inteval=200 ' API函數(shù)聲明 Private Declare Function FlashWindow Lib "user32" (ByVal hwnd As Long, ByVal bInvert As Long) As Long |
|站長郵箱|小黑屋|手機(jī)版|Office中國/Access中國
( 粵ICP備10043721號(hào)-1 )
GMT+8, 2025-7-17 05:50 , Processed in 0.120414 second(s), 23 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.