⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 我的笔记.txt

📁 田径运动会管理系统RAR 用VFP编写
💻 TXT
📖 第 1 页 / 共 4 页
字号:
    #Define RESOURCETYPE_ANY          0x0          && 枚举所有类型的网络资源
    #Define RESOURCETYPE_DISK         0x1          && 枚举磁盘资源
    #Define RESOURCETYPE_PRinT        0x2          && 枚举打印资源
    #Define RESOURCETYPE_UNKNOWN      0xFFFF       && 不知道
    #Define RESOURCEDISPLAYTYPE_DOMAin   1
    #Define RESOURCEDISPLAYTYPE_SERVER   2
    #Define RESOURCEDISPLAYTYPE_GROUP    5
    #Define RESOURCEDISPLAYTYPE_NETWORK  6
    #Define RESOURCEDISPLAYTYPE_ROOT     7
    #Define NETRESOURCE_SIZE            32
    Declare integer WNetOpenEnum in mpr.dll ;
        integer dwScope , ;
        integer dwType , ;
        integer dwUsage , ;
        string  @lpNetResource , ;
        integer @lphEnum
    Declare integer WNetEnumResource in mpr.dll ;
        integer hEnum , ;
        integer @lpcCount , ;
        string  @lpBuffer , ;
        integer @lpBufferSize
    Declare integer WNetCloseEnum in mpr.dll  ;
        integer hEnum
    Local lhEnum
    lhEnum = 0
    If WNetOpenEnum( RESOURCE_CONTEXT, RESOURCETYPE_ANY, 0, 0, @lhEnum ) = 0
        Local lnCount, lnBufferSize, lcBuffer, i资源
        lnCount = -1
        lnBufferSize = 16384
        lcBuffer = Repli( CHR(0), lnBufferSize )
        If WNetEnumResource( lhEnum, @lnCount, @lcBuffer, @lnBufferSize ) = 0
            Local LCENTRY, lnScope, lnType, lnDisplayType, lnUsage, lcLocalName, lcRemoteName, lcComment, lcProvider
            For i资源 = 1 TO lnCount
                LCENTRY = Subs( lcBuffer, (i资源-1)*32+1, 32)
                lnScope       = buf2dword(SUBSTR(LCENTRY, 01, 4))
                lnType        = buf2dword(SUBSTR(LCENTRY, 05, 4))
                lnDisplayType = buf2dword(SUBSTR(LCENTRY, 09, 4))
                lnUsage       = buf2dword(SUBSTR(LCENTRY, 13, 4))
                lcLocalName   = mem2str(buf2dword(SUBSTR(LCENTRY, 17, 4)))
                lcRemoteName  = mem2str(buf2dword(SUBSTR(LCENTRY, 21, 4)))
                lcComment     = mem2str(buf2dword(SUBSTR(LCENTRY, 25, 4)))
                lcProvider    = mem2str(buf2dword(SUBSTR(LCENTRY, 29, 4)))
                *Wait Window ([/]+lcRemoteName+[/]) at 1,1 TimeOut 1
                If !empt(lcRemoteName)
                    Insert Into (tcTableName) values ( lcLocalName, Strt(allt(lcRemoteName), [\\], []), ;
                        lcComment, lcProvider, iif(lplIsGetIP, GetHostIP32( Strt(allt(lcRemoteName), [\\], []) ), []) )
                Endif
            Endfor
        Endif
        = WNetCloseEnum( lhEnum )
    Endif
Endfunc

Function mem2str ( lpnMemBlock )
    #Define BUFFER_SIZE  254
    If lpnMemBlock = 0
        Return []
    Endif
    Local lnPtr, lcResult, lcBuffer, LNPOS
    lnPtr = lpnMemBlock
    lcResult = []
    Do WHILE .T.
        lcBuffer = GetMemCpy( lnPtr, BUFFER_SIZE )
        LNPOS = AT(CHR(0), lcBuffer)
        If LNPOS > 0
            lcResult = lcResult + SUBSTR(lcBuffer, 1, LNPOS-1)
            Return  lcResult
        Else
            lcResult = lcResult + lcBuffer
            lnPtr = lnPtr + BUFFER_SIZE
        Endif
    Enddo
Endfunc

Function GetMemBuf ( lnAddr, lnBufsize )
    Declare RtlMoveMemory in kernel32 As Heap2Str string @Dest, integer Src, integer nLength
    Local lcBuffer
    lcBuffer = Repli(CHR(0), lnBufsize)
    = Heap2Str (@lcBuffer, lnAddr, lnBufsize)
    Return  lcBuffer
Endfunc

Function GetMemCpy ( lnAddr, lnBufsize )
    Declare lstrcpyn in kernel32 As Heap2Str string @Dest, integer Src, integer nLength
    Local lcBuffer
    lcBuffer = Repli(CHR(0), lnBufsize)
    = Heap2Str (@lcBuffer, lnAddr, lnBufsize)
    Return  lcBuffer
Endfunc

Function buf2dword (lcBuffer)
    Return asc(SUBSTR(lcBuffer, 1,1)) + ;
        asc(SUBSTR(lcBuffer, 2,1)) * 256 +;
        asc(SUBSTR(lcBuffer, 3,1)) * 65536 +;
        asc(SUBSTR(lcBuffer, 4,1)) * 16777216
Endfunc












获取操作系统版本
* -------------------------------------
Function GetOSVer ( )
    Declare integer GetVersionEx in kernel32 string @lpVersioninformation
    OsVersioninfo = int2Str(148) + replicate(CHR(0), 144)
    = GetVersionEx(@OsVersioninfo)
    Return Str2int(SUBSTR(OsVersioninfo, 17, 4))
Endfunc

Function int2Str
    Lparameters lnLongVal
    Private i, retustr
    retustr = []
    For i = 24 TO 0 Step -8
        retustr = CHR(int(lnLongVal/(2^i))) + retustr
        lnLongVal = mod(lnLongVal, (2^i))
    Next
    Return retustr
Endfunc

Function Str2int
    Lparameters tcLongStr
    Private i, RetuVal
    RetuVal = 0
    For i = 0 TO 24 Step 8
        RetuVal = RetuVal + (asc(tcLongStr) * (2^i))
        tcLongStr = RIGHT(tcLongStr, LEN(tcLongStr) - 1)
    Next
    Return RetuVal
Endfunc

* -------------------------------------
* 获得操作系统的安装目录
* -------------------------------------
Function GetWindowsDir ()
    Declare integer GetWindowsDirectory in kernel32 string @lpBuffer, integer nSize
    Local lpBuffer, nSizeRet
    #Define MAX_PATH 260
    lpBuffer = SPACE( MAX_PATH )
    nSizeRet = GetWindowsDirectory (@lpBuffer, LEN(lpBuffer))
    If nSizeRet <> 0
        lpBuffer = SUBSTR (lpBuffer, 1, nSizeRet)
    Endif
    Return allt(lpBuffer)
Endfunc

* -------------------------------------
* 获得操作系统的系统目录
* -------------------------------------
Function GetSystemDir ( )
    Declare integer GetSystemDirectory in kernel32 string @lpBuffer, integer nSize
    Local lpBuffer, nSizeRet
    #Define MAX_PATH 260
    lpBuffer = SPACE( MAX_PATH )
    nSizeRet = GetSystemDirectory (@lpBuffer, LEN(lpBuffer))
    If nSizeRet <> 0
        lpBuffer = SUBSTR (lpBuffer, 1, nSizeRet)
    Endif
    Return allt(lpBuffer)
Endfunc

* -------------------------------------
* 获得 Windows 登录用户的临时目录
* -------------------------------------
Function GetUserTempDir ( )
    Declare Integer GetTempPath in kernel32 Integer nBufferLength, String @lpBuffer
    Local lpBuffer, nSizeRet
    #Define MAX_PATH 260
    lpBuffer = SPACE( MAX_PATH )
    nSizeRet = GetTempPath( LEN(lpBuffer), @lpBuffer )
    If nSizeRet <> 0
        lpBuffer = PADR(lpBuffer, nSizeRet)
    Endif
    Return allt(lpBuffer)
Endfunc

* -------------------------------------
* 获取“我的文档”路径
* -------------------------------------
Function GetMyDocuments ( )
    Local IsOK, lcRetu, lcOldonError, loWshShell
    IsOK = .T.
    lcRetu = []
    lcOldonError = ON([Error])
    On Error IsOK = .F.
    loWshShell = CREATEOBJECT("WScript.Shell")
    lcRetu = loWshShell.SpecialFolders("MyDocuments")
    On Error &lcOldonError.
    Return lcRetu
Endfunc

* -------------------------------------
* 获取系统相关路径
* 调用: ? [我的文档: ->], GetWinSystemDir( 0x0005 )
* -------------------------------------
Function GetWinSystemDir ( tnFolderID, tlCreateNew )
    #Define SHGFP_TYPE_CURRENT        0x0000 && 当前路径
    #Define SHGFP_TYPE_DEFAULT        0x0001 && 默认目录
    #Define CSIDL_PERSONAL             0x0005 && \My Documents
    #Define CSIDL_APPDATA              0x001A && \<user name>\Application Data
    #Define CSIDL_PROGRAM_FILES_COMMON 0x002B && \Program Files\Common
    #Define CSIDL_LOCAL_APPDATA        0x001C && \<user name>\Local Settings\Applicaiton Data (non roaming)
    #Define CSIDL_COMMON_APPDATA       0x0023 && \<All Users>\Application Data
    #Define CSIDL_WINDOWS              0x0024 && \Windows
    #Define CSIDL_SYSTEM               0x0025 && \<Windows>\System
    #Define CSIDL_PROGRAM_FILES        0x0026 && \Program Files
    #Define CSIDL_FLAG_CREATE          0x8000 && 不存在则创建文件夹

    If Vartype(tnFolderID)#"N"
        Return []
    Endif
    Local lcFolder, lnFolder
    lnFolder = tnFolderID
    If Vartype(tlCreateNew)=[L] AND tlCreateNew
        lnFolder = lnFolder + CSIDL_FLAG_CREATE
    Endif
    lcFolder = SPACE(260)
    Declare Integer SHGetFolderPath In SHFolder ;
        Integer hwndOwner, ;
        Integer nFolder, ;
        Integer hToken, ;
        Integer dwFlags, ;
        String  @pszPath
    If SHGetFolderPath(0, lnFolder, 0, SHGFP_TYPE_CURRENT, @lcFolder) # 0
        Return []
    Else
        Return Allt(Chrtran(lcFolder ,CHR(0),[]))
    Endif
Endfunc

* -------------------------------------
* 获取系统相关路径
* 调用: ? [我的文档: ->], GetWinSysFolder(5)
* -------------------------------------
Function GetWinSysFolder( tnFolderID )
    #Define ZSM_PROGRAMS                 2 &&Program Groups Folder
    #Define ZSM_PERSONAL                 5 &&Personal Documents Folder
    #Define ZSM_FAVORITES                6 &&Favorites Folder
    #Define ZSM_STARTUP                  7 &&Startup Group Folder
    #Define ZSM_RECENT                   8 &&Recently Used Documents Folder
    #Define ZSM_SENDTO                   9 &&Send To Folder
    #Define ZSM_STARTMENU               11 &&Start Menu Folder
    #Define ZSM_DESKTOPDIRECTORY        16 &&Desktop Folder
    #Define ZSM_NETHOOD                 19 &&Network Neighborhood Folder
    #Define ZSM_TEMPLATES               21 &&Document Templates Folder
    #Define ZSM_COMMON_STARTMENU        22 &&Common Start Menu Folder
    #Define ZSM_COMMON_PROGRAMS         23 &&Common Program Groups Folder
    #Define ZSM_COMMON_STARTUP          24 &&Common Startup Group Folder
    #Define ZSM_COMMON_DESKTOPDIRECTORY 25 &&Common Desktop Folder
    #Define ZSM_APPDATA                 26 &&Application Data Folder
    #Define ZSM_PRINTHOOD               27 &&Printers Folder
    #Define ZSM_COMMON_FAVORITES        31 &&Common Favorites Folder
    #Define ZSM_INTERNET_CACHE          32 &&Temp. Internet Files Folder
    #Define ZSM_COOKIES                 33 &&Cookies Folder
    #Define ZSM_HISTORY                 34 &&History Folder

    If Vartype(tnFolderID)#"N"
        Return []
    Endif
    Local lcFolder
    Declare SHGetSpecialFolderPath IN Shell32 ;
        Integer hwndOwner, ;
        String @cSpecialFolderPath, ;
        Integer nWhichFolder
    lcFolder = Space(260)
    = SHGetSpecialFolderPath( 0, @lcFolder, tnFolderID )
    lcFolder = Allt(Chrtran(lcFolder ,CHR(0),[]))
    Return lcFolder
Endfunc

* -------------------------------------
* 完整的长文件名 -> DOS短文件名
* -------------------------------------
Function GetShortName ( tcPathName )
    tcPathName = iif(Type([tcPathName])=[C], tcPathName, [])
    Declare integer GetShortPathName in kernel32.dll String lpszLongPath, String @lpszShortPath, integer cchBuffer
    Private lpBuffer, nSizeRet
    #Define MAX_PATH 260
    lpBuffer = SPACE( MAX_PATH )
    nSizeRet = GetShortPathName( tcPathName, @lpBuffer, LEN(lpBuffer) )
    If nSizeRet <> 0
        lpBuffer = PADR(lpBuffer, nSizeRet)
    Endif
    Return allt(lpBuffer)
Endfunc

* -------------------------------------
* DOS短文件名 -> 完整的长文件名
* -------------------------------------
Function GetLongName( tcPathName )
    tcPathName = iif(Type([tcPathName])=[C], tcPathName, [])
    Declare integer GetLongPathName in vb5stkit.dll String lpszShortPath, String @lpszLongPath, integer cchBuffer
    Private lpBuffer, nSizeRet
    #Define MAX_PATH 260
    nSizeRet = 0
    lpBuffer = SPACE( MAX_PATH )
    nSizeRet = GetLongPathName( tcPathName, @lpBuffer, LEN(lpBuffer) )
    If nSizeRet <> 0
        lpBuffer = PADR(lpBuffer, nSizeRet)
    Endif
    Return allt(lpBuffer)
Endfunc

* -------------------------------------
* 获得文件的默认打开方式(程序)
* -------------------------------------
Function GetOpenFileExec ( tcPathFileName )
    tcPathFileName = IIF(TYPE([tcPathFileName])=[C], tcPathFileName, [])
    Local lpBuffer, lnRetuEr
    #Define MAX_PATH 260
    lpBuffer = SPACE( MAX_PATH )
    If !empt(tcPathFileName) AND FILE(tcPathFileName)
        Declare Integer FindExecutable IN shell32 String lpFile, String lpDirectory, String @lpResult
        lnRetuEr = FindExecutable( tcPathFileName, [], @lpBuffer )
        If lnRetuEr > 32
            lnRetuEr = Left(lpBuffer, AT(CHR(0), lpBuffer)-1)
        Endif
    Endif
    Return allt(lpBuffer)
Endfunc

* -------------------------------------
* 动态注册(dll、ocx)控件
* -------------------------------------
Function DllRegister ( lpLibFileName, isReg )
    isReg = IIF(TYPE([isReg])=[U], .T., isReg)
    lpProcName = IIF(isReg, "DllRegisterServer", "DllUnregisterServer" )
    Declare integer LoadLibrary in kernel32 string lpLibFileName
    Declare integer FreeLibrary in kernel32 integer hLibModule
    Declare integer GetProcAddress in kernel32 integer hModule, string lpProcName
    Declare integer CallWindowProc in user32 integer lpPrevWndFunc, integer hwnd, integer Msg, integer wParam, integer lParam

    Local hLibModule, lnAddress
    hLibModule = LoadLibrary( lpLibFileName )
    If hLibModule # 0
        lnAddress = GetProcAddress( hLibModule, lpProcName )
        If lnAddress # 0
            If CallWindowProc( lnAddress, 0,0,0,0) = 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -