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

مشكلة فى الحصول على أصدار ملف

مغلق
بدأه msayed2004 في 26 نوفمبر 2006 · 9 رد · 983 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

للحصول على أصدار ملف كنت متعود أستخدم الكود التالى


dwSignature As Long
dwStrucVersionl As Integer
dwStrucVersionh As Integer
dwFileVersionMSl As Integer
dwFileVersionMSh As Integer
dwFileVersionLSl As Integer
dwFileVersionLSh As Integer
dwProductVersionMSl As Integer
dwProductVersionMSh As Integer
dwProductVersionLSl As Integer
dwProductVersionLSh As Integer
dwFileFlagsMask As Long
dwFileFlags As Long
dwFileOS As Long
dwFileType As Long
dwFileSubtype As Long
dwFileDateMS As Long
dwFileDateLS As Long
End Type


Private Declare Function GetFileVersionInfo Lib "Version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwhandle As Long, ByVal dwlen As Long, lpData As Any) As Long
Private Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
Private Declare Function VerQueryValue Lib "Version.dll" Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, puLen As Long) As Long
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, ByVal Source As Long, ByVal length As Long)


Public Function GetFileVersion(FilePath As String) As String
Dim Rc As Long, lDummy As Long, sBuffer() As Byte
Dim lBufferLen As Long, lVerPointer As Long, udtVerBuffer As VS_FIXEDFILEINFO
Dim lVerbufferLen As Long

lBufferLen = GetFileVersionInfoSize(FilePath, lDummy)

If lBufferLen < 1 Then

GetFileVersion = "No Version Info available"

Exit Function
End If

ReDim sBuffer(lBufferLen)
Rc = GetFileVersionInfo(FilePath, 0&, lBufferLen, sBuffer(0))
Rc = VerQueryValue(sBuffer(0), "\", lVerPointer, lVerbufferLen)
MoveMemory udtVerBuffer, lVerPointer, Len(udtVerBuffer)


GetFileVersion = Format$(udtVerBuffer.dwFileVersionMSh) & "." & Format$(udtVerBuffer.dwFileVersionMSl) & "." & Format$(udtVerBuffer.dwFileVersionLSh) & "." & Format$(udtVerBuffer.dwFileVersionLSl)

End Function
Private Type VS_FIXEDFILEINFO

كله تمام لغاية ما جيت أستخدمة للحصول على أصدار ملف الـ mscorlib.dll بتاع الـ DotNet Framework , بيدينى 2.0.-14809.42 فى حين أنه المفروض يدى 2.0.50727.42 يا ترى فى أى حل لهذه المشكلة

مسار الملف الكامل للى عندهم آخر أصدار من الـ DotNet Framework هو

<Windows path>\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll

و أحب أقول أنى عايز APIs مش أى Referance زى scrrun.dll

وكمان أحب أقول عن حاجة غربيه فى الملف ده و هى خاصة بعرض أصداره من الويندوز بصوا على الصورة دى

propex8.gif

تم تعديل هذه المشاركة بواسطة msayed2004 في 26 نوفمبر 2006 في 01:40

#2

BUMP

عفوا - لو فيه أى أفكار لانى محتاجها بسرعة

#3

BUMP

:)

#4

BUMP

:(

تم تعديل هذه المشاركة بواسطة msayed2004 في 27 نوفمبر 2006 في 04:42

#5

همممممممممممممممممممممممم محدش عايز يساعد , طب أنا تقريبا عرفت سبب الخطأ لكن مش عارف أصححه , المشكلة من الكود ده :

dwFileVersionLSh As Integer

لأنه متعرف كـ Integer فمش قادر يشيل قيم توصل لـ 50727

المشكلة أنى عملته Long أدانى 131072

عملته String البرنامج بيحصلة Crash

عملته Variant ما بيديش حاجة , فى أى أفكار

:wacko:

#6

شباب حد بيفكر يساعد , لو مفيش حل ممكن حد يتكرم و يقولى أنه مفيش حل

#7

BUMP

BUMP

BUMP

BUMP

BUMP

BUMP

BUMP

BUMP

BUMP

#8
اقتباس
المشكلة أنى عملته Long أدانى 131072

اعمله Double أو Currency .. جرب يمكن :)

ليس كل ما يتمناه المرء يدركه

arabteam2000.gif

#9

معليش امزح معاك .. جرب استخدم مكتبة : Microsoft Scripting Runtime

ضع في قسم التصريحات العامه : Private fs As New FileSystemObject

واستخدم هذا الكود :

MsgBox fs.GetFileVersion('ضع هنا اسم الملف ومساره')

;)

ليس كل ما يتمناه المرء يدركه

arabteam2000.gif

#10

أولا شكرا على الرد بعد ما كنت فقدت الأمل فى أن حد بيفكر يساعدنى.

ثانيا فى أول مشاركة أنا قلت

اقتباس
و أحب أقول أنى عايز APIs مش أى Referance زى scrrun.dll

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…