下面的這個函式會造成彈出的檔案打開對話框顯示不完全,請如果如何修正?
這個函式就是建立一個Long型別的檔案記憶體映象,但好像有記憶體泄漏,請問如何正確寫入一個Long型別的記憶體檔案映象?
Option Explicit
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Private Declare Function CreateFileMapping Lib "kernel32" Alias "CreateFileMappingA" (ByVal hFile As Long, lpFileMappigAttributes As SECURITY_ATTRIBUTES, ByVal flProtect As Long, ByVal dwMaximumSizeHigh As Long, ByVal dwMaximumSizeLow As Long, ByVal lpName As String) As Long
Private Declare Function OpenFileMapping Lib "kernel32" Alias "OpenFileMappingA" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As String) As Long
Private Declare Function MapViewOfFile Lib "kernel32" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long) As Long
Private Declare Function UnmapViewOfFile Lib "kernel32" (lpBaseAddress As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Const SECTION_MAP_READ = &H4
Private Const FILE_MAP_READ = SECTION_MAP_READ
Private Const SECTION_MAP_WRITE = &H2
Private Const FILE_MAP_WRITE = SECTION_MAP_WRITE
Private Const PAGE_READWRITE = &H4
Dim m_hMemShare As Long
Dim m_lpdata As Long
Public Function CreateRestCallerSharedMemory()
Dim hMemShare As Long
Dim mAttr As SECURITY_ATTRIBUTES
Dim data As Long
Dim lpData As Long
data = GetCurrentProcessId
hMemShare = CreateFileMapping(&HFFFFFFFF, mAttr, PAGE_READWRITE, 0, LenB(data), "RestCallerShare")
If hMemShare = 0 Then
Debug.Print "無法創建映像檔案,創建映像資料失敗!"
Exit Function
End If
m_hMemShare = hMemShare
lpData = MapViewOfFile(hMemShare, FILE_MAP_WRITE, 0, 0, LenB(data))
If lpData = 0 Then
Debug.Print "映像檔案到當前行程失敗!"
Exit Function
End If
m_lpdata = lpData
CopyMemory ByVal lpData, data, LenB(data)
End Function
Private Sub Form_Load()
CreateRestCallerSharedMemory
CommonDialog1.ShowOpen
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/139691.html
標籤:API
上一篇:vb WebBrowser如何選擇Ext.grid.Grid一行
下一篇:求vba高手指點!!
