Foksh قام بنشر مايو 23 قام بنشر مايو 23 (معدل) السلام عليكم ورحمة الله وبركاته ،، في طور تحسين الأداة الجديدة ( لم يعلن عنها بعد ) ، للتعامل مع الأكواد التي تعمل على 32 ولا تعمل على 64 ، ما زال العمل جاري على تحسين أداء الأداة ، بحيث من خلال النقاش المفتوح نأتي للوصول الى أفضل أداء ونتيجة . مرفق صورة توضيحية للوضع الحالي للأداة ، مع طرح مثال لكود قبل وبعد التحويل الناتج من الأداة . الكود الذي تمت التجربة عليه كمثال ( لا الحصر ) :- Option Compare Database Option Explicit Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As _ Any) As Long Public Const WM_SETREDRAW = &HB Public Sub FillChildren(twTree As MSComctllib.TreeView, rst As dao.Recordset, _ ByVal nChild As MSComctllib.nodX, _ strParentField As String, strIDField As String, _ strTextField As String, Optional strTextField2 As Variant, Optional strTextField3 As Variant, Optional strTextField4 As Variant, Optional strTextField5 As Variant, _ Optional strKeyPrefix As String, _ Optional varImage As Variant, _ Optional varImageRst As Variant, _ Optional fBold As Boolean) On Local Error GoTo FillChildren_Err Dim strCriteria As String, IMAGE As Variant, strPrefix As String, strText As String, newnodx As MSComctllib.nodX If strKeyPrefix = "" Then strPrefix = "a" Else strPrefix = strKeyPrefix End If If Mid(nChild.key, 2) = "0" Then strCriteria = BuildCriteria(strParentField, rst.Fields(strParentField).Type, "=" & Mid(nChild.key, 2) & " or is null") Else strCriteria = BuildCriteria(strParentField, rst.Fields(strParentField).Type, "=" & Mid(nChild.key, 2)) End If rst.FindFirst strCriteria Do Until rst.NoMatch strText = Nz(rst(strTextField), " ") If Not IsMissing(strTextField2) Then strText = strText & (" " + rst(strTextField2)) If Not IsMissing(strTextField3) Then strText = strText & (" " + rst(strTextField3)) If Not IsMissing(strTextField4) Then strText = strText & (" " + rst(strTextField4)) If Not IsMissing(strTextField5) Then strText = strText & (" " + rst(strTextField5)) If Not IsMissing(varImageRst) Then IMAGE = rst(varImageRst) End If If (Not IsMissing(varImage)) And (Len(Nz(IMAGE)) = 0) Then IMAGE = varImage End If IMAGE = Nz(IMAGE, "Default") Set newnodx = twTree.Nodes.Add(nChild, tvwChild, strPrefix & rst(strIDField), strText, IMAGE) rst.FindNext strCriteria Loop FillChildren_End: On Error Resume Next Exit Sub FillChildren_Err: Select Case Err.Number Case 35601, 35603 'Image not found!!! IMAGE = "FlagDefault" Resume Case 35602 'key not unique!!! Set newnodx = twTree.Nodes(strPrefix & rst(strIDField)) Resume Next Case Else MsgBox "Error in FillChildren!!! " & Err.Number & Err.Description Stop Resume End Select End Sub النتيجة من الأداة بعد التحسينات والتعديلات :- 'Code converted to 64-bit compatibility By Foksh ( Officena.Net ) 'Generated on: 2025-05-23 15:22:26 'Tool version: Ver : 1.0 Option Compare Database Option Explicit #If VBA7 Then Public Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As LongPtr, ByVal wParam As Long, lParam As Any) As Long #Else Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long #End If Public Const WM_SETREDRAW = &HB Public Sub FillChildren(twTree As MSComctllib.TreeView, rst As dao.Recordset, _ ByVal nChild As MSComctllib.nodX, _ strParentField As String, strIDField As String, _ strTextField As String, Optional strTextField2 As Variant, Optional strTextField3 As Variant, Optional strTextField4 As Variant, Optional strTextField5 As Variant, _ Optional strKeyPrefix As String, _ Optional varImage As Variant, _ Optional varImageRst As Variant, _ Optional fBold As Boolean) On Local Error GoTo FillChildren_Err Dim strCriteria As String, IMAGE As Variant, strPrefix As String, strText As String, newnodx As MSComctllib.nodX If strKeyPrefix = "" Then strPrefix = "a" Else strPrefix = strKeyPrefix End If If Mid(nChild.key, 2) = "0" Then strCriteria = BuildCriteria(strParentField, rst.Fields(strParentField).Type, "=" & Mid(nChild.key, 2) & " or is null") Else strCriteria = BuildCriteria(strParentField, rst.Fields(strParentField).Type, "=" & Mid(nChild.key, 2)) End If rst.FindFirst strCriteria Do Until rst.NoMatch strText = Nz(rst(strTextField), " ") If Not IsMissing(strTextField2) Then strText = strText & (" " + rst(strTextField2)) If Not IsMissing(strTextField3) Then strText = strText & (" " + rst(strTextField3)) If Not IsMissing(strTextField4) Then strText = strText & (" " + rst(strTextField4)) If Not IsMissing(strTextField5) Then strText = strText & (" " + rst(strTextField5)) If Not IsMissing(varImageRst) Then IMAGE = rst(varImageRst) End If If (Not IsMissing(varImage)) And (Len(Nz(IMAGE)) = 0) Then IMAGE = varImage End If IMAGE = Nz(IMAGE, "Default") Set newnodx = twTree.Nodes.Add(nChild, tvwChild, strPrefix & rst(strIDField), strText, IMAGE) rst.FindNext strCriteria Loop FillChildren_End: On Error Resume Next Exit Sub FillChildren_Err: Select Case Err.Number Case 35601, 35603 'Image not found!!! IMAGE = "FlagDefault" Resume Case 35602 'key not unique!!! Set newnodx = twTree.Nodes(strPrefix & rst(strIDField)) Resume Next Case Else MsgBox "Error in FillChildren!!! " & Err.Number & Err.Description Stop Resume End Select End Sub باب النقاش مفتوح لأي تعليقات وتوضيحات وتحديثات للجميع .. الأداة حصرية وليس لها أي أساس في أي موقع أجنبي أو عربي ( فقط في أوفيسنا ) *ملاحظة :- الدعوة للنقاش لا تقتصر على من لديه خبرة في آكسيس فقط . أيضاً أخوتنا الأساتذة برتبة ( خبير ) الذين أشعر أنهم غير معنيين بالمشاركة بمواضيع أخوتهم الأساتذة في هذا المنتدى هم معنيين خصوصاً بالمشاركة وإبداء الرأي ، وأرجو ان لا تكون هذه العبارة في غير محلها 😎 . نحن نتكاتف هنا لنتشارك معرفتنا وعلمنا الذي علمنا إياه الله - ولا علم إلا علمه . لذا متأملاً منهم خصوصاً مشاركتنا أفكارهم . 💥 الإداة بواجهتين ( عربي - انجليزي ) والرسائل والردود حسب كل لغة Code Converter x64.zip85.95 kB · 8 downloads Code Converter x32.zip80.96 kB · 5 downloads طبعاً ، أتمنى ممن يرغب بتجربة الأداة بأول إصدار لها ، أن يزودني بالنتيجة التي قام بها على الكود ، بحيث :- ينشر في رده الكود الأصل ( الذي قام بتجربته ) ، والكود الناتج ( بعد تحويله من الأداة ) لتعم الفائدة ولمعرفة الأخطاء التي قد تحدث ( ولا شك أن الأداة تحتوي أخطاء كثيرة ، ولكن لإجراءاتكم بالإفادة ) . إن كان يملك الكود الصحيح والمنطقي ( الذي يعمل على النواتين ) ، فشاكراً له تزويدنا به للمقارنة . Code Converter x32.zip80.96 kB · 5 downloads Code Converter x64.zip85.95 kB · 8 downloads تم تعديل مايو 28 بواسطه Moosak إضافة آخر التحديثات للموضوع الرئيسي 🙂 2
ناقل قام بنشر مايو 23 قام بنشر مايو 23 3 ساعات مضت, Foksh said: الدعوة للنقاش لا تقتصر على من لديه خبرة في آكسيس فقط . وعليكم السلام ورحمة الله وبركاته اشارك برأي من باب المشاركة ولست خبيرا ,,,,, لأنك انت من طلب من غير الخبراء المشاركة 😃 عن تعديل الكود اعتقد يجب النظر في كل المتغيرات والدوال مثلا هناك دوال تحتاج الى تعديل للعمل في بيئة 64 bit مثل ::::::::::::::: 1. FindWindow 2. GetWindowLong / SetWindowLong 3. GetTickCount 4. ShellExecute 5. Sleep 6. GetSystemMetrics 7. GetCursorPos 8. OpenProcess 9. CreateFile والله اعلم 1
ابوخليل قام بنشر مايو 23 قام بنشر مايو 23 اداة مهمة تختصر الوقت والجهد .. لدي فكرة حول هذه الأداة .. و أرى ان وقت الفكرة المناسب هو بعد اكتمال الأداة تماما وكما يقولون .. كل شيء بوقته حلو 1
jjafferr قام بنشر مايو 23 قام بنشر مايو 23 وعليكم السلام اهلا اخي فادي 🙂 اهم شيء في هذا الموضوع، هو الرجوع الى تعليمات مايكروسوفت في التعامل مع دوال نواة 64 بت ، في الرابط التالي: https://www.microsoft.com/en-us/download/details.aspx?id=9970 ملف النص في الرابط اعلاه يعطيك تفاصيل الدالة على نواة 64 بت. المثال الذي استعملته انت، وانا متأكد بأنك كنت حريص في انتقاء الدالة، توجد به 3 فروقات عن الدالة في ملف مايكروسوفت (السطر الثاني من ملف مايكروسوفت) : والمسألة لا تتوقف عند هذا السطر فقط، فهناك دوال معقدة تحتاج الى استعمال if# في دالتي الخاصة. رجاء قراءة الموضوعين التاليين ، فطريقة العمل تختلفان ، وفيهما بعض الامثلة المختلفة: . . 1
kkhalifa1960 قام بنشر مايو 23 قام بنشر مايو 23 اعتقد بعد هذه الكوكبة من علمائنا الافاضل ..... وفي هذا الموضوع المهم والحيوي واقتراب موعد عدم اثراء أي برامج تعتمد عى 32 بت ...... وحتى تحصين برامجنا التي نعمل عليها . لابد من مناقشتها وهنا فرصة عظيمة لذلك . ولكي تتم المناقشة لابد من مشاركة مهندسنا (أبو جودي) الذي نأمل أن يشاركنا في هذا الطرح . تحياتي للجميع . 1
Foksh قام بنشر مايو 23 الكاتب قام بنشر مايو 23 (معدل) 8 ساعات مضت, ناقل said: وعليكم السلام ورحمة الله وبركاته اشارك برأي من باب المشاركة ولست خبيرا ,,,,, لأنك انت من طلب من غير الخبراء المشاركة 😃 أهلا بأخي @ناقل ، يسعدني مرورك وتعقيبك على الموضوع ، رغم انك تسرعت في الحكم علي 😁😁 بالعكس ، أساتذتي الخبراء من المستهدفين بالمشاركة في هذا النقاش ( طبعاً مع احترامي الكامل لحرية ابداء الرأي ) ، انظر .. 11 ساعات مضت, Foksh said: هم معنيين خصوصاً بالمشاركة وإبداء الرأي وتعقيباً على ما أسلفت تالياً :- 8 ساعات مضت, ناقل said: عن تعديل الكود اعتقد يجب النظر في كل المتغيرات والدوال مثلا هناك دوال تحتاج الى تعديل للعمل في بيئة 64 bit مثل ::::::::::::::: 1. FindWindow 2. GetWindowLong / SetWindowLong 3. GetTickCount 4. ShellExecute 5. Sleep 6. GetSystemMetrics 7. GetCursorPos 8. OpenProcess 9. CreateFile ففي الحسبان ان شاء الله ، ولكن الصورة والفكرة السابقة من الإصدار الأول للتجارب الأولى لجمع التعليقات والمعلومات التي نستفيد منها .. 6 ساعات مضت, ابوخليل said: اداة مهمة تختصر الوقت والجهد .. لدي فكرة حول هذه الأداة .. و أرى ان وقت الفكرة المناسب هو بعد اكتمال الأداة تماما وكما يقولون .. كل شيء بوقته حلو معلمي الفاضل @ابوخليل ، أُسعد بمشاركتكم ، واتمنى أن أصل في النهاية إلى أداة تحقق الجزء الأكبر من فكرتها وهدفها .. بانتظار توجيهاتكم وإفاداتكم وتصويبكم لي لطرق تسهم في إنجاح المشروع .. 5 ساعات مضت, jjafferr said: اهلا اخي فادي 🙂 اهم شيء في هذا الموضوع، هو الرجوع الى تعليمات مايكروسوفت في التعامل مع دوال نواة 64 بت ، في الرابط التالي: https://www.microsoft.com/en-us/download/details.aspx?id=9970 ملف النص في الرابط اعلاه يعطيك تفاصيل الدالة على نواة 64 بت. معلمي الفاضل @jjafferr ، يسعدني توجيهكم لي بهذه الروابط ، وانا فعلاً قد قرأتها بشكل غير مفصل ، ولكن قراءتي لها كانت محاولة لرسم خطواتي التي سأبدأ بها ، وطبعاً لا بد من تغيير اتجاهي في الوقت الحالي واتجاه بوصلتي ، طبعاً بهدف البدء بخطوات صحيحة تالياً .. أما فيما يخص الكود الذي استخدمته كتجربه ، فيسعدني توجيهك من موقع مايكروسوفت ، دلالة على أن المصادر التي يجب علي اتباع نهجها يجب أن تكون موثوقة لاحقاً .. 5 ساعات مضت, jjafferr said: المثال الذي استعملته انت، وانا متأكد بأنك كنت حريص في انتقاء الدالة، توجد به 3 فروقات عن الدالة في ملف مايكروسوفت (السطر الثاني من ملف مايكروسوفت) : 4 ساعات مضت, kkhalifa1960 said: اعتقد بعد هذه الكوكبة من علمائنا الافاضل ..... وفي هذا الموضوع المهم والحيوي واقتراب موعد عدم اثراء أي برامج تعتمد عى 32 بت ...... وحتى تحصين برامجنا التي نعمل عليها . أخي الأستاذ @kkhalifa1960 ، يسعدني تعليقكم ومروركم ، وإثراءكم وملاحظتكم كثيراً .. ونأمل أن نتعرف على أفكاركم لاحقاً باحثين عن سبيل واسع الأفق لتحقيق المطلوب . أما فيما يخص هذا الجزء .. 4 ساعات مضت, kkhalifa1960 said: ولكي تتم المناقشة لابد من مشاركة مهندسنا (أبو جودي) الذي نأمل أن يشاركنا في هذا الطرح . فطبعاً صديقي وحبيبي @ابو جودي ، من الذين أشاركهم أفكاري وأستنير بتعليقاتهم ، حاله حال أساتذتي ومعلميني الأفاضل ( دون استثناء طبعاً ) . لكن وضعه الحالي الصحي قد يجعل تعليقاته متاحة فيما بيننا خارج المنتدى . ( يعاني من كسر في يده اليمنى حالياً شافاه الله وعافاه شفاء عاجل غير آجل ) . وباسمي وباسم المنتدى نيابةً نتمنى له الشفاء القريب بإذن الله . أشكر لكم جميعاً مروركم وقريباً سنبدأ بطرح الفكرة من بدايتها ( النسخة الأولى من الأداة ) ، ومع توجيهاتكم معلميني وأساتذتي وأخواني ، سنبدأ بتصحيح المسارات الخاطئة عند وجودها وإنجاح الفكرة . تم تعديل مايو 24 بواسطه Foksh
ناقل قام بنشر مايو 23 قام بنشر مايو 23 4 دقائق مضت, Foksh said: أهلا بأخي @ناقل ، يسعدني مرورك ةتعقيبك على الموضوع ، رغم انك تسرعت في الحكم علي اخي الفاضل انا لم اتسرع ولم احكم عليك .... ولكني حكمت على نفسي باني لست خبير ... وفعلا انا تلميذ لكم اخي الفاضل ... المقامات محفوظة 1
Foksh قام بنشر مايو 23 الكاتب قام بنشر مايو 23 3 دقائق مضت, ناقل said: ولكني حكمت على نفسي باني لست خبير ... وفعلا انا تلميذ لكم اخي الفاضل ... المقامات محفوظة من تواضع لله رفعه ، وانت من الأساتذة الذين لهم بصماتهم وأسلوبهم 1
kkhalifa1960 قام بنشر مايو 23 قام بنشر مايو 23 أولاً :- تمنياتي لأستاذنا ابوجودي الشفاء العاجل باذن الله . ثانياً :- 📌 هذا مرجع دوال VBA المتوافقة مع النواتين (32 بت و64 بت) هذا المرجع يحتوي على جميع الدوال الشائعة التي يمكن استخدامها في VBA داخل Access، مع دعم للنواتين 32 بت و64 بت باستخدام #If VBA7 Then. 🔹 1- دوال استدعاء Windows API #If VBA7 Then Public Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As LongPtr, ByVal wParam As Long, lParam As Any) As Long #Else Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long #End If SendMessage – إرسال رسائل للنوافذ داخل النظام. PostMessage – إرسال رسائل غير متزامنة. FindWindow – العثور على نافذة بناءً على عنوانها. ShowWindow – التحكم في عرض أو إخفاء النافذة. GetSystemMetrics – الحصول على معلومات حول إعدادات النظام. 🔹 2- دوال التعامل مع الملفات #If VBA7 Then Public Declare PtrSafe Function CopyFile Lib "kernel32" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long #Else Public Declare Function CopyFile Lib "kernel32" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long #End If CopyFile – نسخ ملف من موقع إلى آخر. DeleteFile – حذف ملف معين. FindFirstFile – البحث عن أول ملف يتطابق مع نمط معين. FindNextFile – البحث عن الملفات التالية بنفس النمط. 🔹 3- دوال النظام (System Functions) #If VBA7 Then Public Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long #Else Public Declare Function GetTickCount Lib "kernel32" () As Long #End If GetTickCount – الحصول على عدد الثواني منذ تشغيل النظام. GetWindowsDirectory – استرجاع مسار مجلد Windows. GetSystemMetrics – استرجاع بيانات عن إعدادات النظام. 🔹 4- دوال إضافية مفيدة #If VBA7 Then Public Declare PtrSafe Function GetCursorPos Lib "user32" (lpPoint As Any) As Long #Else Public Declare Function GetCursorPos Lib "user32" (lpPoint As Any) As Long #End If GetCursorPos – الحصول على موقع مؤشر الفأرة. SetCursorPos – تعيين موقع جديد لمؤشر الفأرة. GetActiveWindow – استرجاع النافذة النشطة حاليًا. GetDesktopWindow – استرجاع نافذة سطح المكتب الرئيسية. 1
Foksh قام بنشر مايو 23 الكاتب قام بنشر مايو 23 (معدل) 10 دقائق مضت, kkhalifa1960 said: 📌 هذا مرجع دوال VBA المتوافقة مع النواتين (32 بت و64 بت) شكراً لك على الإضافة الجميلة ، وإن شاء الله سأستفيد من هذا الرد في تعديلات الأداة لاحقاً .. طبعاً ومعلومة مهمة بالنسبة لي ، أن الأداة ستحمل اسم فريق المنتدى / قسم آكسيس كاملاً لدعمهم الوفير في المعلومات .. تم تعديل مايو 23 بواسطه Foksh
kkhalifa1960 قام بنشر مايو 23 قام بنشر مايو 23 جعلها الله في ميزان حسناتكم وجزاكم الله عنا كل الخير . 1
jjafferr قام بنشر مايو 24 قام بنشر مايو 24 الموقع التالي فيه روابط وفيها برنامج اكسس ممكن الاستفادة منه (البرنامج للبيع، بس يمكنك انزاله بلاش) : https://isladogs.co.uk/32-64-bit-conversion/index.html 3
عاشق_الرقي قام بنشر مايو 24 قام بنشر مايو 24 السلام عليكم ورحمة الله وبركاته اشكر الاستاذ المهندس Foksh والشكر موصول لكل من شارك في إثراء هذا الموضوع بعلمه وجهده وذهنه من الأساتذة الكبار في مجال البرمجة وتعليل البيانات ... ولست منهم ولكني مجرد هاوٍ ... والذي اصبح حتمياً الخوض فيه والحصول على مخرجات فنية رائعة كما عودتمونا فلله دركم .. ونحن من علمكم ننتهل زادكم الله من علمه وفضله 1
Foksh قام بنشر مايو 24 الكاتب قام بنشر مايو 24 4 ساعات مضت, jjafferr said: الموقع التالي فيه روابط وفيها برنامج اكسس ممكن الاستفادة منه (البرنامج للبيع، بس يمكنك انزاله بلاش) : https://isladogs.co.uk/32-64-bit-conversion/index.html بارك الله بكم معلمنا الفاضل وأستاذي الجليل ,, قيّمة جداً وثمينة مراجعك التي تشير إليها في مشاركاتك ، وهي ليست بقيمة و نُبل أخلاقكم وعلمكم 4 ساعات مضت, عاشق_الرقي said: السلام عليكم ورحمة الله وبركاته وعليكم السلام ورحمة الله وبركاته ,, أشكرك أخي على مشاعرك وكلامك اللطيف ،
Moosak قام بنشر مايو 24 قام بنشر مايو 24 أفكار لامعة أخي فادي @Foksh 😊👌🌷 .. لك أجمل تحية 😊🌹 ما أجمل هذي الأدوات اللي تسهل العمل وتضع الحلول الجذرية لأغلب المشاكل اللي تواجهنا .. ............ بصراحة أحاول أحشر نفسي في الموضوع لكن ما عندي شي أضيفة بعد ملاحظات فطاحلة الأكسس هنا 😅🖐 لذلك سألتزم المتابعة والاستفادة وجني الثمار بعد نضجها إن شاء الله 😄✌🌹🌟🌷 1
Foksh قام بنشر مايو 25 الكاتب قام بنشر مايو 25 15 ساعات مضت, Moosak said: أفكار لامعة أخي فادي @Foksh 😊👌🌷 .. لك أجمل تحية 😊🌹 ما أجمل هذي الأدوات اللي تسهل العمل وتضع الحلول الجذرية لأغلب المشاكل اللي تواجهنا .. ............ بصراحة أحاول أحشر نفسي في الموضوع لكن ما عندي شي أضيفة بعد ملاحظات فطاحلة الأكسس هنا 😅🖐 لذلك سألتزم المتابعة والاستفادة وجني الثمار بعد نضجها إن شاء الله 😄✌🌹🌟🌷 أهلاً بك مهندسنا الغالي 💐 بالعكس ، قد تكون الكلمات القليلة تحمل في طياتها معاني وفوائد كبيرة 😇 . جاري حالياً العمل على إصدار النسخة الأولى معدلةً ، وسيتم طرحها قريباً ( غير مفتوحة المصدر ) - للتجارب فقط لحين الخلاص من أكثر المشاكل التي أواجهها في إنشاء مرونة بالنتيجة 😅 . 1
Foksh قام بنشر مايو 25 الكاتب قام بنشر مايو 25 (معدل) دوال تعمل على نواة 32 فقط ، غير تلك التي في المشاركات السابقة ، للتجارب الشبه نهائية على الإصدار الأول من الأداة . مع ارفاق الكود الموافق له في 64 بالشكل الصحيح والمنطقي . تم تعديل مايو 26 بواسطه Foksh اضافة عبارة
Foksh قام بنشر مايو 28 الكاتب قام بنشر مايو 28 (معدل) 💥 الإداة بواجهتين ( عربي - انجليزي ) والرسائل والردود حسب كل لغة Code Converter x64.zip Code Converter x32.zip طبعاً ، أتمنى ممن يرغب بتجربة الأداة بأول إصدار لها ، أن يزودني بالنتيجة التي قام بها على الكود ، بحيث :- ينشر في رده الكود الأصل ( الذي قام بتجربته ) ، والكود الناتج ( بعد تحويله من الأداة ) لتعم الفائدة ولمعرفة الأخطاء التي قد تحدث ( ولا شك أن الأداة تحتوي أخطاء كثيرة ، ولكن لإجراءاتكم بالإفادة ) . إن كان يملك الكود الصحيح والمنطقي ( الذي يعمل على النواتين ) ، فشاكراً له تزويدنا به للمقارنة . Code Converter x32.zip Code Converter x64.zip تم تعديل مايو 28 بواسطه Foksh تنسيق الموضوع 1
Foksh قام بنشر مايو 29 الكاتب قام بنشر مايو 29 (معدل) 📌 مقدمة عن الأداة :- أقدم لكم أداة متقدمة لتحويل أكواد API في آكسيس من الإصدارات القديمة والحديثة ، لتكون متوافقة مع أنظمة 64-bit مع الحفاظ على التوافق مع أنظمة 32-bit . هذه الأداة تم تطويرها خصيصاً لمطوري ومبرمجي قواعد البيانات الذين يعانون من مشاكل التوافق عند الترقية إلى إصدارات أوفيس 64-bit . 🎯 المشكلة التي تحلها الأداة :- مع إصدار أوفيس 64-bit ، تغيرت بنية المؤشرات والأنواع الخاصة بمناولة النوافذ (Handles) من Long (32-bit) إلى LongPtr (64-bit) . هذا التغيير جعل معظم إعلانات API القديمة غير صالحة للعمل على الإصدارات الجديدة ، مما يتطلب تعديلها يدوياً لها . ما الجديد في التحديث الجديد ؟ ميزات الأداة الرئيسية والمحدثة :- تحويل تلقائي للإعلانات :- تقوم بتحويل إعلانات API من صيغة 32-bit إلى صيغة مزدوجة ( 32 و 64 ) متوافقة مع كلا النظامين . دعم أنواع البيانات الخاصة :- تدعم الأنواع المعرفة من المستخدم (User-Defined Types) مثل RECT , POINTAPI وغيرها . تحليل ذكي للكود :- تتعرف على المتغيرات التي تحتاج تحويلاً وتعدلها تلقائياً . حفظ التوافق مع الإصدارات القديمة :- تحافظ على عمل الكود على أنظمة 32-bit أثناء إضافة دعم 64-bit . واجهة سهلة الاستخدام :- توفر واجهة بسيطة لتحويل الأكواد بنقرة واحدة . كيف تعمل الأداة ؟ تعتمد الأداة على عدة خطوات ذكية لتحليل الكود وإجراء التحويل :- 1. تحليل الإعلانات :- تفحص كل إعلانات API لتحديد ما إذا كانت تحتاج إلى تعديل أم لا !!! 2. تحديد أنواع البيانات :- تتعرف على المتغيرات من نوع Long التي تمثل مؤشرات أو مقابض (Handles) بشكل تلقائي وذكي . 3. إنشاء كود مشروط :- تولد كوداً يستخدم التعليمة الشرطية #If VBA7 And Win64 Then للتفريق بين النظامين . 4. الحفاظ على الهيكل الأصلي :- تحافظ على التعليقات والتنسيق الأصلي للكود قدر الإمكان . ( باللغة الإنجليزية حالياً) . أنواع API التي تتعامل معها الأداة :- تتعامل الأداة مع مجموعة واسعة من إعلانات API ، بما في ذلك :- إدارة النوافذ (User32.dll) FindWindow, GetWindow, SetWindowPos SendMessage, PostMessage GetWindowRect, GetWindowText إدارة الذاكرة والعمليات (Kernel32.dll) VirtualAlloc, VirtualFree OpenProcess, CreateProcess GetModuleHandle, GetProcAddress إدارة التسجيل (Advapi32.dll) RegOpenKey, RegCreateKey RegQueryValue, RegSetValue إدارة واجهة المستخدم CreateDC, CreateCompatibleDC SelectObject, DeleteObject الخصائص الفنية للأداة :- الدقة في التحويل :- تتعرف الأداة على السياقات المختلفة للمتغيرات من نوع Long لتحديد ما إذا كانت تمثل مقابض تحتاج للتحويل . دعم اللغات :- تدعم الواجهة اللغتين العربية والإنجليزية . التحقق من الأخطاء :- تحتوي على آلية للتحقق من الأخطاء المحتملة أثناء التحويل . التعامل مع الاستثناءات :- تتعرف على الدوال التي لا تحتاج للتحويل مثل GetVersion وGetTickCount . تم تعديل مايو 29 بواسطه Foksh
Moosak قام بنشر مايو 29 قام بنشر مايو 29 ماشاء الله عليك باش مهندس @Foksh 🙂🌹 اللي أجمل من التنفيذ هو الفكرة نفسها .. فتح الله عليك 😊 مبدأيا وأول تجربة للأداة .. شوف أنت واحكم بنفسك 😁: ' --------------------------<< المصدر >>---------------------- Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long ' --------------------------<< النــاتج >>---------------------- '=================================================== ' API Code Converter for Dual Compatibility (32-bit & 64-bit) ' Developed By Foksh (Officena.Net) ' Generated on: 2025-05-29 08:45:50 ' Tool version: v1.2 '=================================================== #If VBA7 And Win64 Then ' 64-bit declarations Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long #Else ' 32-bit declarations Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long #End If حاسس أنه ماشي تغير في دالة ال API أو فيه شي ناقص (PetrSafe) مثلا ؟؟!! 🤔 وللفائدة هذي مكتبات كبيرة لأكواد ال API ممكن تستفيد منها : https://binaryworld.net/Main/Api.aspx?L=3 http://vbnet.mvps.org/ 1
Moosak قام بنشر مايو 29 قام بنشر مايو 29 التجربة الثانية : Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _ ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As _ Long Private Const KEYEVENTF_KEYUP = &H2 ' Get the current state of the NumLock key Function GetNumLockKey() As Boolean GetNumLockKey = GetKeyState(vbKeyNumlock) End Function Sub SetNumLockKey(ByVal newState As Boolean) ' if the current state must be changed If CBool(GetKeyState(vbKeyNumlock)) <> newState Then ' programmatically press and release the NumLock key keybd_event vbKeyNumlock, 0, 0, 0 keybd_event vbKeyNumlock, 0, KEYEVENTF_KEYUP, 0 End If End Sub والناتج : '=================================================== ' API Code Converter for Dual Compatibility (32-bit & 64-bit) ' Developed By Foksh (Officena.Net) ' Generated on: 2025-05-29 09:11:57 ' Tool version: v1.2 '=================================================== Private Const KEYEVENTF_KEYUP = &H2 #If VBA7 And Win64 Then ' 64-bit declarations Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _ ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As _ Long #Else ' 32-bit declarations Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _ ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As _ Long #End If أولا : ما أضاف الدوال GetNumLockKey و SetNumLockKey في الناتج تماما ..! ثانيا : لا حظت أنه بعد نسخ الناتج يمسحه من النموذج (الأفضل أن يضل مكانه ) في ظل وجود الزر (مسح الحقول) : 1
Foksh قام بنشر مايو 29 الكاتب قام بنشر مايو 29 2 ساعات مضت, Moosak said: اللي أجمل من التنفيذ هو الفكرة نفسها .. فتح الله عليك 😊 ولأجمل هو تشريفكم لنا بملاحظاتكم ومروركم العطر .. بارك الله فيكم ، وهي ما زالت في طور التحديث 2 ساعات مضت, Moosak said: مبدأيا وأول تجربة للأداة .. شوف أنت واحكم بنفسك 😁: كلامك سليم ، وكانت من ضمن الاحتمالات التي مررت بها ، ولكن لله الحمد تم إضافة التعديل وأصبحت النتيجة لأول تجربة لك = '=================================================== ' API Code Converter for Dual Compatibility (32-bit & 64-bit) ' Developed By Foksh (Officena.Net) ' Generated on: 2025-05-29 10:34:09 ' Tool version: v1.3 '=================================================== #If VBA7 And Win64 Then ' 64-bit declarations Public Declare PtrSafe Function CopyFile Lib "kernel32" Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long #Else ' 32-bit declarations Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA"(ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long)As Long #End If لمتابعتكم إن كانت النتيجة صحيحة .. 2 ساعات مضت, Moosak said: وللفائدة هذي مكتبات كبيرة لأكواد ال API ممكن تستفيد منها : جزاااكم الله خيراً تم الاطلاع واكتساب الفائدة . والتجربة الثانية ، بعد التحديثات الحالية كانت نتيجتها = '=================================================== ' API Code Converter for Dual Compatibility (32-bit & 64-bit) ' Developed By Foksh (Officena.Net) ' Generated on: 2025-05-29 10:37:15 ' Tool version: v1.3 '=================================================== Private Const KEYEVENTF_KEYUP = &H2 ' Get the current state of the NumLock key Function GetNumLockKey() As Boolean GetNumLockKey = GetKeyState(vbKeyNumlock) End Function Sub SetNumLockKey(ByVal newState As Boolean) ' if the current state must be changed If CBool(GetKeyState(vbKeyNumlock)) <> newState Then ' programmatically press and release the NumLock key keybd_event vbKeyNumlock, 0, 0, 0 keybd_event vbKeyNumlock, 0, KEYEVENTF_KEYUP, 0 End If End Sub #If VBA7 And Win64 Then ' 64-bit declarations Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, _ ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long #Else ' 32-bit declarations Private Declare Sub keybd_event Lib "user32"(ByVal bVk As Byte, _ ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare Function GetKeyState Lib "user32"(ByVal nVirtKey As Long)As _ Long #End If هل توافق المطلوب أم لا ؟؟ 2 ساعات مضت, Moosak said: ثانيا : لا حظت أنه بعد نسخ الناتج يمسحه من النموذج (الأفضل أن يضل مكانه ) في ظل وجود الزر (مسح الحقول) : هذه النقطة كنت قد سهوت عنها من كثرة التجارب ، وكنت اعتمد القص بدلاً من النسخ 😅 . سيتم اعادة الكود للنسخ بدلاً من القص . 1
Moosak قام بنشر مايو 29 قام بنشر مايو 29 سلمت الأنامل ياصاحب اللمسات الذهبية 😊 بعد التعديل : المشكل الأول : المشكل الثاني (بعد إزالة الشرط السفلية يدويا) : وأعزوه إلى وجود دوال الAPI في الأسفل بدل وجودها في أعلى صفحة الموديول والله أعلم ، لأن المشكلة تختفي بعد رفعها في الأعلى
Foksh قام بنشر مايو 29 الكاتب قام بنشر مايو 29 (معدل) 1 ساعه مضت, Moosak said: سلمت الأنامل ياصاحب اللمسات الذهبية 😊 بعد التعديل : المشكل الأول : المشكل الثاني (بعد إزالة الشرط السفلية يدويا) : وأعزوه إلى وجود دوال الAPI في الأسفل بدل وجودها في أعلى صفحة الموديول والله أعلم ، لأن المشكلة تختفي بعد رفعها في الأعلى جميل جداً .. ستتم المتابعة تم تعديل مايو 29 بواسطه Foksh
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.