VB中一些API的使用

来源:互联网 发布:汉服淘宝店推荐知乎 编辑:程序博客网 时间:2024/06/05 00:42
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function GetTickCount Lib "kernel32" () As Long

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As LongByVal bInheritHandle As LongByVal dwProcessId As LongAs Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As LongByVal dwMilliseconds As LongAs Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As LongAs Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As LongAs Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As LongByVal uExitCode As LongAs Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function IsWindow Lib "user32" (ByVal hwnd As LongAs Long

Public Sub Waitms(ms As Long)
    
Dim t1 As Long
    
Dim t2 As Long
    
    
    t1 
= GetTickCount
    
Do
        DoEvents
        Sleep 
200
        t2 
= GetTickCount
    
Loop While t2 - t1 < ms
End Sub


Public Function ShellWait(cmd As StringAs Long
    
Const PROCESS_QUERY_INFORMATION = &H400
    
Const STILL_ALIVE = &H103
    
Const INFINITE = &HFFFF
    
    
Dim ExitCode As Long
    
Dim hProcess As Long
    
Dim pid As Long
    
    pid 
= Shell(cmd, vbHide)
    hProcess 
= OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)
    
    
Do
        
Call GetExitCodeProcess(hProcess, ExitCode)
        DoEvents
        
Loop While ExitCode = STILL_ALIVE
    
Call CloseHandle(hProcess)
    
    ShellWait 
= ExitCode
End Function

 

 

 

'フォルダ設定用構造体
Public Type BROWSEINFO
    hOwner   
As Long
    pidlRoot   
As Long
    pszDisplayName   
As String
    lpszTitle   
As String
    ulFlags   
As Long
    lpfn   
As Long
    lParam   
As Long
    iImage   
As Long
End Type
'ファイルシステム利用できる
Public Const BIF_RETURNONLYFSDIRS = &H1
'Api関数
Public Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As LongByVal pszPath As StringAs Long
Public Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Dim bi     As BROWSEINFO
    bi.hOwner 
= Me.hWnd
    bi.pidlRoot 
= 0&
    bi.lpszTitle 
= "VHDLフォルダご指定ください"
    bi.ulFlags 
= BIF_RETURNONLYFSDIRS
    
    pidl 
= SHBrowseForFolder(bi)
    path 
= Space$(512)
    r 
= SHGetPathFromIDList(ByVal pidl&ByVal path)
    
    
If r Then
        pos 
= InStr(path, Chr$(0))
        txtPath1.Text 
= Left(path, pos - 1)
    
Else
        txtPath1.Text 
= ""
    
End If
原创粉丝点击