الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ممكن شرح للداله هذي

بدأه serious في 31 يناير 2009 · 0 رد · 354 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1

Public Function CallApiByName(ByVal sLib As String, ByVal sMod As String, ParamArray Params()) As Long

Dim bvASM(64) As Byte 'enought to hold code + 10 params

Dim i As Long

Dim lPos As Long

Dim sVal As String

bvASM(0) = &H58: bvASM(1) = &H59: bvASM(2) = &H59

bvASM(3) = &H59: bvASM(4) = &H59: bvASM(5) = &H50

lPos = 6

For i = UBound(Params) To 0 Step -1

bvASM(lPos) = &H68: lPos = lPos + 1

sVal = (Params(i)): GoSub PutLong: lPos = lPos + 4

Next

bvASM(lPos) = &HE8: lPos = lPos + 1

sVal = GetProcAddress(LoadLibraryA(sLib), sMod) - VarPtr(bvASM(lPos)) - 4

GoSub PutLong: lPos = lPos + 4

bvASM(lPos) = &HC3

CallApiByName = CallWindowProcA(VarPtr(bvASM(0)), 0, 0, 0, 0)

Exit Function

PutLong:

'This is cheap replacement for RtlMoveMemory/putmem4 (hi/lo word/byte)

sVal = Right$(String(8, "0") & Hex(sVal), 8)

bvASM(lPos + 0) = ("&h" & Mid$(sVal, 7, 2))

bvASM(lPos + 1) = ("&h" & Mid$(sVal, 5, 2))

bvASM(lPos + 2) = ("&h" & Mid$(sVal, 3, 2))

bvASM(lPos + 3) = ("&h" & Mid$(sVal, 1, 2))

Return

End Function

ودي بشرح مفصل لها

والف شكرا مقدما

مواضيع مشابهة