eissa_l قام بنشر يونيو 6, 2021 قام بنشر يونيو 6, 2021 هل واجهات أكسس تدعم واجهات ال API وإذا أحد ممكن يعطينا نبذة عن طريقتها وتطبيقها على برنامج محاسبي واجهاتة بالأكسس
SEMO.Pa3x قام بنشر يونيو 6, 2021 قام بنشر يونيو 6, 2021 2 ساعات مضت, eissa_l said: هل واجهات أكسس تدعم واجهات ال API وإذا أحد ممكن يعطينا نبذة عن طريقتها وتطبيقها على برنامج محاسبي واجهاتة بالأكسس وضح قصدك "تدعم API" ! هل تقصد دوال الويندوز Windows API ؟ هل تقصد قراءة البيانات من موقع ويب عن طريق API ؟ او ماذا تقصد
د.كاف يار قام بنشر يونيو 6, 2021 قام بنشر يونيو 6, 2021 5 ساعات مضت, eissa_l said: هل واجهات أكسس تدعم واجهات ال API وإذا أحد ممكن يعطينا نبذة عن طريقتها وتطبيقها على برنامج محاسبي واجهاتة بالأكسس لا يوجد واجهات API هي فقط خاصية ما ذا تريد بالضبط ؟
eissa_l قام بنشر يونيو 6, 2021 الكاتب قام بنشر يونيو 6, 2021 اقصد API الذي يحتوي دوال البرنامج او الوسيط بين الواجهات وقاعدة البيانات هل يقبل مع واجهات الإكسس او لا واذا يقبل تتكرموا تشرحوا لي الطريقة
د.كاف يار قام بنشر يونيو 6, 2021 قام بنشر يونيو 6, 2021 4 دقائق مضت, eissa_l said: اقصد API الذي يحتوي دوال البرنامج او الوسيط بين الواجهات وقاعدة البيانات هل يقبل مع واجهات الإكسس او لا واذا يقبل تتكرموا تشرحوا لي الطريقة كل شي يقبل لكن انت ايش تحتاج بالضبط
eissa_l قام بنشر يونيو 6, 2021 الكاتب قام بنشر يونيو 6, 2021 عندي برنامج محاسبي وشغالة علية كذا مؤسسة في السعودية بس الان طلع قرار ان الدولة تحتاج يكون البرنامج يقبل ال API عشان حتنزل انتجريشنات تنربط بالبرنامج ويكون عندها اكسس
أفضل إجابة د.كاف يار قام بنشر يونيو 6, 2021 أفضل إجابة قام بنشر يونيو 6, 2021 8 دقائق مضت, eissa_l said: عندي برنامج محاسبي وشغالة علية كذا مؤسسة في السعودية بس الان طلع قرار ان الدولة تحتاج يكون البرنامج يقبل ال API عشان حتنزل انتجريشنات تنربط بالبرنامج ويكون عندها اكسس اذا يلزم انك تحصل على المكتبة عشان تثبتها و تقدر من خلالها تستدعي API عشان تتصل بالسيرفر سواء كان في الزكاة و الدخل او غيره لكن انصحك انك تشتغل على ASP.Net أو VB.Net أو #C راح تجد سهولة في التعامل مع جميع خصائص API و سهلة في تثبيتها 1 1
eissa_l قام بنشر يونيو 6, 2021 الكاتب قام بنشر يونيو 6, 2021 ممكن تعطينا فكرة مختصرة عن طريقة استدعاء المكتبة وكيف ممكن استدعي او اتصل بالسيرفر !!
SEMO.Pa3x قام بنشر يونيو 7, 2021 قام بنشر يونيو 7, 2021 (معدل) 15 ساعات مضت, eissa_l said: ممكن تعطينا فكرة مختصرة عن طريقة استدعاء المكتبة وكيف ممكن استدعي او اتصل بالسيرفر !! يختلف استدعاء المكتبة من لغة برمجة لأخرى.. وكذلك الإتصال، حدد اللغة التي تريد العمل عليها، ثم ابحث عن طريقة الاتصال واستدعاء المكتبة فـ google سيعطيك الاجابات الكافية لذلك تم تعديل يونيو 7, 2021 بواسطه SEMO.Pa3x 1
jjafferr قام بنشر يونيو 7, 2021 قام بنشر يونيو 7, 2021 17 ساعات مضت, د.كاف يار said: اذا يلزم انك تحصل على المكتبة عشان تثبتها و تقدر من خلالها تستدعي API عشان تتصل بالسيرفر سواء كان في الزكاة و الدخل او غيره هناك حوالي 3 - 4 اسأله حديثة عن هذا الموضوع ، ولم تلقى اجابة ، والجميع يبحث عن طريقة لربط برنامجهم المعمول بالاكسس ، بسيرفر هيئة الزكاة و الدخل او فياريت بستطيع تقديم شيء بالاكسس يخدم غرضهم 🙂 اخوي حسنين @SEMO.Pa3x ساعدني في بعض المواضيع بعمل وسيط بين الاكسس وبين البرنامج/الجهاز الاخر ، كالتالي: اخذ API او SDK البرنامج الاخر او الجهاز الاخر والمعمول على لغات dot net ، عمل برنامج وسيط بين الاكسس والبرنامج/الجهاز الآخر ، نرسل متغيرات/parameter معينة الى هذا الوسيط عن طريق Shell و Command Line ، ويقوم الوسيط بتمرير المتغيرات الى البرنامج/الجهاز ، ويعطينا النتيجة 🙂 اما اخوي حسين @د.كاف يار فله باع في هذه اللغة كذلك 🙂 ولا ننسى ان هناك طرق لإستعمال مكتبات Net. من داخل الاكسس كذلك 🙂 جعفر
د.كاف يار قام بنشر يونيو 7, 2021 قام بنشر يونيو 7, 2021 40 دقائق مضت, jjafferr said: هناك حوالي 3 - 4 اسأله حديثة عن هذا الموضوع ، ولم تلقى اجابة ، والجميع يبحث عن طريقة لربط برنامجهم المعمول بالاكسس ، بسيرفر هيئة الزكاة و الدخل او فياريت بستطيع تقديم شيء بالاكسس يخدم غرضهم 🙂 اخوي حسنين @SEMO.Pa3x ساعدني في بعض المواضيع بعمل وسيط بين الاكسس وبين البرنامج/الجهاز الاخر ، كالتالي: اخذ API او SDK البرنامج الاخر او الجهاز الاخر والمعمول على لغات dot net ، عمل برنامج وسيط بين الاكسس والبرنامج/الجهاز الآخر ، نرسل متغيرات/parameter معينة الى هذا الوسيط عن طريق Shell و Command Line ، ويقوم الوسيط بتمرير المتغيرات الى البرنامج/الجهاز ، ويعطينا النتيجة 🙂 اما اخوي حسين @د.كاف يار فله باع في هذه اللغة كذلك 🙂 ولا ننسى ان هناك طرق لإستعمال مكتبات Net. من داخل الاكسس كذلك 🙂 جعفر للأسف المتطلبات كثيرة جدا و عشان اقدر اشتغل عليها لابد يكون معاي معلومات المنشأة الخاصة بالزكاة و الدخل لأن الفاتورة النهائي لابد تكون بأحد الصيغتين XMIL أو PDF و هذا رابط مشروع الفوترة الالتكرونية مشروع الضوابط والمتطلبات والمواصفات الفنية والقواعد الإجرائية اللازمة لتنفيذ أحكام لائحة الفوترة الإلكترونية لكن في كل الأحوال كل الطرق سهلة بستثناء الأكسس و راح ابدء اشتغل على هذا النظام على C#.net و راح اضيفه في المنتدى حال الانتهاء منه انشاء الله 1
jjafferr قام بنشر يونيو 7, 2021 قام بنشر يونيو 7, 2021 9 دقائق مضت, د.كاف يار said: و عشان اقدر اشتغل عليها لابد يكون معاي معلومات المنشأة الخاصة بالزكاة و الدخل اذا ممكن تخبرنا شو البيانات المطلوبة ، حتى يوفرها المهتمين بربط برنامجهم الاكسس ، بهيئة الزكاة والدخل 🙂 13 دقائق مضت, د.كاف يار said: و راح ابدء اشتغل على هذا النظام على C#.net جميل جدا ، ولكن رجاء حاول ان تجعل برنامجك يعمل كبرنامج مستقل ، و كبرنامج يمكن ان يتم التحكم به عن طريق Command line وارسال المتغيرات/Parameters عن طريق برنامج الاكسس او اي برنامج آخر 🙂 جعفر
SEMO.Pa3x قام بنشر يونيو 7, 2021 قام بنشر يونيو 7, 2021 58 دقائق مضت, jjafferr said: هناك حوالي 3 - 4 اسأله حديثة عن هذا الموضوع ، ولم تلقى اجابة ، والجميع يبحث عن طريقة لربط برنامجهم المعمول بالاكسس ، بسيرفر هيئة الزكاة و الدخل او فياريت بستطيع تقديم شيء بالاكسس يخدم غرضهم 🙂 اخوي حسنين @SEMO.Pa3x ساعدني في بعض المواضيع بعمل وسيط بين الاكسس وبين البرنامج/الجهاز الاخر ، كالتالي: اخذ API او SDK البرنامج الاخر او الجهاز الاخر والمعمول على لغات dot net ، عمل برنامج وسيط بين الاكسس والبرنامج/الجهاز الآخر ، نرسل متغيرات/parameter معينة الى هذا الوسيط عن طريق Shell و Command Line ، ويقوم الوسيط بتمرير المتغيرات الى البرنامج/الجهاز ، ويعطينا النتيجة 🙂 اما اخوي حسين @د.كاف يار فله باع في هذه اللغة كذلك 🙂 ولا ننسى ان هناك طرق لإستعمال مكتبات Net. من داخل الاكسس كذلك 🙂 جعفر حسناً، سأجيب على الأسئلة قدر استطاعتي وسيكون الشرح على Visual Studio .NET اقتباس اخذ API او SDK البرنامج الاخر او الجهاز الاخر والمعمول على لغات dot net الـ SDK هو عبارة عن reference يتم اضافته لمشروع الـ NET. على هيئة ملف dll. كيف نقوم بإضافته لمشروعنا ؟ وسيصبح بجانب البرنامج عند عمل Compile أي إن البرنامج لن يعمل بدون هذه المكتبة. وهذه المكتبات التي قلنا انها ملفات dll. تكون مكتوبة حصراً بلغة NET. وهي عبارة عن classes / modules تمرر لها مدخلاتك تقوم هية بالفلترة وتعطيك المخرجات وانت بدورك ستقوم بإستقبالها بحسب اللغة المقابلة. اقتباس عمل برنامج وسيط بين الاكسس والبرنامج/الجهاز الآخر حسناً، عمل الوسيط وإرسال المعلومات له ليس بالشيء الصعب لكن الصعب هو استلام البيانات من الوسيط.. أولا: نقوم بعمل الوسيط... سنقوم بعمل تطبيق وظيفته نرسل له عبارة معينة فيرد علينا بعبارة أخرى بلغة NET. Module Module1 Sub Main() For Each arg As String In My.Application.CommandLineArgs Select Case arg Case "hi" Console.WriteLine("Hi, How are you !") Case "how old are you" Console.WriteLine("i'm 25 years old") Case Else Console.WriteLine("ask me !") End Select Next End Sub End Module لاحظ الحلقة Select Case اذا قلنا Hi يجيبنا Hi, How are you ..الخ من باقي التخمينات في الحلقة. السطر الأهم هو Console.WriteLine هو سيقوم بكتابة الإجابة على الكونسول وسنقوم بقراءتها المشكلة ان الكونسول ( cmd.exe ) لا يدعم اللغة العربية ! ممكن نقوم بحل المشكلة بإستبدال الحروف العربية بإنكليزية مثال ( A = أ ) وسنقوم بالأكسس باستبدال الأنكليزي بالعربي وارجاع الحروف لإصلها اضن ان الفكرة وصلت.. ------------------------------------------------------------------------------------------- الآن مرحلة ارسال وإستقبال البيانات في الأكسس والطريقة الأفضل هي Windows API والدوال المطلوبة هي: CreatePipe CreateProcessA ReadFile CloseHandle WaitForSingleObject GetExitCodeProcess GetStartupInfo GetFileSize لتفاصيل أكثر، اضغط على إسم الدالة أرفقت لكم مصادر من MSDN Option Compare Database Option Explicit '-------------------------------------------------------- 'c0ded bY : SEMO.Pa3x 'telegram : semo_pa4x 'facebook : https://www.facebook.com/Nisr.Aln3jaf 'last edit : 26/4/2019 '-------------------------------------------------------- Private Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type Private Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessId As Long dwThreadId As Long End Type Private Type STARTUPINFO cb As Long lpReserved As Long lpDesktop As Long lpTitle As Long dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Byte hStdInput As Long hStdOutput As Long hStdError As Long End Type Private Const WAIT_INFINITE As Long = (-1&) Private Const STARTF_USESHOWWINDOW As Long = &H1 Private Const STARTF_USESTDHANDLES As Long = &H100 Private Const SW_HIDE As Long = 0& Private Declare Function CreatePipe Lib "kernel32" (phReadPipe As Long, phWritePipe As Long, lpPipeAttributes As SECURITY_ATTRIBUTES, ByVal nSize As Long) As Long Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, lpProcessAttributes As Any, lpThreadAttributes As Any, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long Private Declare Sub GetStartupInfo Lib "kernel32" Alias "GetStartupInfoA" (lpStartupInfo As STARTUPINFO) Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long Private Function Redirect(szBinaryPath As String, szCommandLn As String) As String Dim tSA_CreatePipe As SECURITY_ATTRIBUTES Dim tSA_CreateProcessPrc As SECURITY_ATTRIBUTES Dim tSA_CreateProcessThrd As SECURITY_ATTRIBUTES Dim tSA_CreateProcessPrcInfo As PROCESS_INFORMATION Dim tStartupInfo As STARTUPINFO Dim hRead As Long Dim hWrite As Long Dim bRead As Long Dim abytBuff() As Byte Dim lngResult As Long Dim szFullCommand As String Dim lngExitCode As Long Dim lngSizeOf As Long tSA_CreatePipe.nLength = Len(tSA_CreatePipe) tSA_CreatePipe.lpSecurityDescriptor = 0& tSA_CreatePipe.bInheritHandle = True tSA_CreateProcessPrc.nLength = Len(tSA_CreateProcessPrc) tSA_CreateProcessThrd.nLength = Len(tSA_CreateProcessThrd) If (CreatePipe(hRead, hWrite, tSA_CreatePipe, 0&) <> 0&) Then tStartupInfo.cb = Len(tStartupInfo) GetStartupInfo tStartupInfo With tStartupInfo .hStdOutput = hWrite .hStdError = hWrite .dwFlags = STARTF_USESHOWWINDOW Or STARTF_USESTDHANDLES .wShowWindow = SW_HIDE End With szFullCommand = """" & szBinaryPath & """" & " " & szCommandLn lngResult = CreateProcess(0&, szFullCommand, tSA_CreateProcessPrc, tSA_CreateProcessThrd, True, 0&, 0&, vbNullString, tStartupInfo, tSA_CreateProcessPrcInfo) If (lngResult <> 0&) Then lngResult = WaitForSingleObject(tSA_CreateProcessPrcInfo.hProcess, WAIT_INFINITE) lngSizeOf = GetFileSize(hRead, 0&) If (lngSizeOf > 0) Then ReDim abytBuff(lngSizeOf - 1) If ReadFile(hRead, abytBuff(0), UBound(abytBuff) + 1, bRead, ByVal 0&) Then Redirect = StrConv(abytBuff, vbUnicode) End If End If Call GetExitCodeProcess(tSA_CreateProcessPrcInfo.hProcess, lngExitCode) CloseHandle tSA_CreateProcessPrcInfo.hThread CloseHandle tSA_CreateProcessPrcInfo.hProcess If (lngExitCode <> 0&) Then Err.Raise vbObject + 1235&, "GetExitCodeProcess", "Non-zero Application exist code" CloseHandle hWrite CloseHandle hRead Else Err.Raise vbObject + 1236&, "CreateProcess", "CreateProcess Failed, Code: " & Err.LastDllError End If End If End Function Public Function MainRedirect(param As String) Dim resp As String resp = Redirect(CurrentProject.Path & "\" & "app.exe", param) MainRedirect = resp End Function طبعاً app.exe هو اسم التطبيق الذي قمنا بعمله في الأعلى ووضعناه بجانب قاعدة بيانات الأكسس. الإستدعاء: Private Sub cmd_send_Click() MsgBox MainRedirect("hi") End Sub النتيجة: وأخيراً، استميحك عذراً في الإجابة عن هذا السؤال الموجه لأخي @د.كاف يار اقتباس ولا ننسى ان هناك طرق لإستعمال مكتبات Net. من داخل الاكسس كذلك 🙂 أغلب الطرق فاشلة وغير فعالة وهي بتحويل البرامج المكتوبة في الدوت نت الى مكتبات بصيغة tlb. لكن أؤكد لك انها طرق فاشلة وغير فعالة، هناك طريقة وجدتها سابقا وهي تحميل مكتبة دوت نت في لغات غير الدوت نت - Load vb.net to unmanaged process https://www.dev-point.com/vb/threads/389438 هذا هو الدرس، لمن يريد قراءته.. وأخيراً، ارجو ان اكون قد وفقت بإيصال الفكرة ولو بالشيء اليسير تحياتي لك يا مُعلمي @jjafferr 1 3
eissa_l قام بنشر يونيو 7, 2021 الكاتب قام بنشر يونيو 7, 2021 مشكورين استاذ جعفر و الدكتور كاف.. يعني الأن من الأسهل لي انة انقل واجهات قاعدتي على لغة الفيجول بيسك او c# او php
jjafferr قام بنشر يونيو 7, 2021 قام بنشر يونيو 7, 2021 1 ساعه مضت, eissa_l said: يعني الأن من الأسهل لي انة انقل واجهات قاعدتي على لغة الفيجول بيسك او c# او php همممم طبعا اذا عملت هذا ، فلا حاجة لك بالاجابات التي سنحصل عليها من هذه الموضوع 🙂 ولكني ارى اننا اصبحنا خطوة اقرب الى المطلوب ، طبعا للذين يريدون ان يستخدمون برنامجهم الاكسس للتخاطب مع موقع هيئة الزكاة والدخل 🙂 1 ساعه مضت, SEMO.Pa3x said: المشكلة ان الكونسول ( cmd.exe ) لا يدعم اللغة العربية ممكن ان نرسل النتائج الى ملف txt ، ومنه الى نأخذ البيانات بالعربي ، او نعمل دالة تأخذ النتائج الحروف بصيغة AscW ومن ثم الى ChrW في برنامجنا 🙂 1 ساعه مضت, SEMO.Pa3x said: وأخيراً، ارجو ان اكون قد وفقت بإيصال الفكرة ولو بالشيء اليسير شكرا جزيلا اخوي حسنين على هذا الاسهاب في التوضيح ، ولا غنى لنا عنك في المستجدات هنا ، ان شاء الله 🙂 جعفر 2
eissa_l قام بنشر يونيو 7, 2021 الكاتب قام بنشر يونيو 7, 2021 استاذ جعفر اذا انتظر ان شاء الله ونستفيد من بحر علمكم
SEMO.Pa3x قام بنشر يونيو 7, 2021 قام بنشر يونيو 7, 2021 (معدل) 12 ساعات مضت, jjafferr said: ن نرسل النتائج الى ملف txt ، ومنه الى نأخذ البيانات بالعربي ، او نعمل دالة تأخذ النتائج الحروف بصيغة AscW ومن ثم الى ChrW في برنامجنا 🙂 لا حاجة لـ AscW دعنا نستخدم الفنكشنات التي تم طرحها في موضوع الترجمة هنا: 'فنكشن فك التشفير Function DecodeQP2(s As String) As String Dim i As Long Dim p1 As Long Dim p2 As Long Dim r As String i = 2 Do While i < Len(s) Select Case Mid(s, i, 1) Case "0" To "7" r = r & Chr(CLng("&H" & Mid(s, i, 2))) Case "C", "D" p1 = CLng("&H" & Mid(s, i, 2)) - 192 i = i + 3 p2 = CLng("&H" & Mid(s, i, 2)) - 128 r = r & ChrW(64 * p1 + p2) Case Else ' Not handled End Select i = i + 3 Loop DecodeQP2 = r End Function 'فنكشن التشفير Function EncodeQP2(s As String) As String Dim i As Long Dim p1 As Long Dim p2 As Long Dim r As String Dim n As Long For i = 1 To Len(s) n = AscW(Mid(s, i, 1)) If n < 128 Then r = r & "%" & Hex(n) ElseIf n < 2048 Then p1 = n \ 64 r = r & "%" & Hex(p1 + 192) p2 = n Mod 64 r = r & "%" & Hex(p2 + 128) Else End If Next i EncodeQP2 = r End Function الـ Module في الأكسس: Option Compare Database Option Explicit '-------------------------------------------------------- 'c0ded bY : SEMO.Pa3x 'telegram : semo_pa4x 'facebook : https://www.facebook.com/Nisr.Aln3jaf 'last edit : 26/4/2019 '-------------------------------------------------------- Private Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type Private Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessId As Long dwThreadId As Long End Type Private Type STARTUPINFO cb As Long lpReserved As Long lpDesktop As Long lpTitle As Long dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Byte hStdInput As Long hStdOutput As Long hStdError As Long End Type Private Const WAIT_INFINITE As Long = (-1&) Private Const STARTF_USESHOWWINDOW As Long = &H1 Private Const STARTF_USESTDHANDLES As Long = &H100 Private Const SW_HIDE As Long = 0& Private Declare Function CreatePipe Lib "kernel32" (phReadPipe As Long, phWritePipe As Long, lpPipeAttributes As SECURITY_ATTRIBUTES, ByVal nSize As Long) As Long Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, lpProcessAttributes As Any, lpThreadAttributes As Any, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long Private Declare Sub GetStartupInfo Lib "kernel32" Alias "GetStartupInfoA" (lpStartupInfo As STARTUPINFO) Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long Private Function Redirect(szBinaryPath As String, szCommandLn As String) As String Dim tSA_CreatePipe As SECURITY_ATTRIBUTES Dim tSA_CreateProcessPrc As SECURITY_ATTRIBUTES Dim tSA_CreateProcessThrd As SECURITY_ATTRIBUTES Dim tSA_CreateProcessPrcInfo As PROCESS_INFORMATION Dim tStartupInfo As STARTUPINFO Dim hRead As Long Dim hWrite As Long Dim bRead As Long Dim abytBuff() As Byte Dim lngResult As Long Dim szFullCommand As String Dim lngExitCode As Long Dim lngSizeOf As Long tSA_CreatePipe.nLength = Len(tSA_CreatePipe) tSA_CreatePipe.lpSecurityDescriptor = 0& tSA_CreatePipe.bInheritHandle = True tSA_CreateProcessPrc.nLength = Len(tSA_CreateProcessPrc) tSA_CreateProcessThrd.nLength = Len(tSA_CreateProcessThrd) If (CreatePipe(hRead, hWrite, tSA_CreatePipe, 0&) <> 0&) Then tStartupInfo.cb = Len(tStartupInfo) GetStartupInfo tStartupInfo With tStartupInfo .hStdOutput = hWrite .hStdError = hWrite .dwFlags = STARTF_USESHOWWINDOW Or STARTF_USESTDHANDLES .wShowWindow = SW_HIDE End With szFullCommand = """" & szBinaryPath & """" & " " & szCommandLn lngResult = CreateProcess(0&, szFullCommand, tSA_CreateProcessPrc, tSA_CreateProcessThrd, True, 0&, 0&, vbNullString, tStartupInfo, tSA_CreateProcessPrcInfo) If (lngResult <> 0&) Then lngResult = WaitForSingleObject(tSA_CreateProcessPrcInfo.hProcess, WAIT_INFINITE) lngSizeOf = GetFileSize(hRead, 0&) If (lngSizeOf > 0) Then ReDim abytBuff(lngSizeOf - 1) If ReadFile(hRead, abytBuff(0), UBound(abytBuff) + 1, bRead, ByVal 0&) Then Redirect = StrConv(abytBuff, vbUnicode) End If End If Call GetExitCodeProcess(tSA_CreateProcessPrcInfo.hProcess, lngExitCode) CloseHandle tSA_CreateProcessPrcInfo.hThread CloseHandle tSA_CreateProcessPrcInfo.hProcess If (lngExitCode <> 0&) Then Err.Raise vbObject + 1235&, "GetExitCodeProcess", "Non-zero Application exist code" CloseHandle hWrite CloseHandle hRead Else Err.Raise vbObject + 1236&, "CreateProcess", "CreateProcess Failed, Code: " & Err.LastDllError End If End If End Function Public Function MainRedirect(param As String) Dim resp As String resp = Redirect(CurrentProject.Path & "\" & "app.exe", EncodeQP2(param)) MainRedirect = DecodeQP2(resp) End Function Function DecodeQP2(s As String) As String Dim i As Long Dim p1 As Long Dim p2 As Long Dim r As String i = 2 Do While i < Len(s) Select Case Mid(s, i, 1) Case "0" To "7" r = r & Chr(CLng("&H" & Mid(s, i, 2))) Case "C", "D" p1 = CLng("&H" & Mid(s, i, 2)) - 192 i = i + 3 p2 = CLng("&H" & Mid(s, i, 2)) - 128 r = r & ChrW(64 * p1 + p2) Case Else ' Not handled End Select i = i + 3 Loop DecodeQP2 = r End Function Function EncodeQP2(s As String) As String Dim i As Long Dim p1 As Long Dim p2 As Long Dim r As String Dim n As Long For i = 1 To Len(s) n = AscW(Mid(s, i, 1)) If n < 128 Then r = r & "%" & Hex(n) ElseIf n < 2048 Then p1 = n \ 64 r = r & "%" & Hex(p1 + 192) p2 = n Mod 64 r = r & "%" & Hex(p2 + 128) Else End If Next i EncodeQP2 = r End Function الإستدعاء: Private Sub cmd_send_Click() MsgBox MainRedirect("السلام عليكم") End Sub لاحظ ان النص تم تشفيره وفكه في الـ Module وليس في الإستدعاء.. التطبيق المساعد بلغة NET. Module Module1 Sub Main() For Each arg As String In My.Application.CommandLineArgs Select Case DecodeQP2(arg) Case "السلام عليكم" Console.WriteLine(EncodeQP2("عليكم السلام ورحمة الله وبركاته")) Case "كيف حالك" Console.WriteLine(EncodeQP2("الحمدلله")) Case Else Console.WriteLine(EncodeQP2("لم تقم بإرسال سؤال")) End Select Next End Sub Function DecodeQP2(s As String) As String Dim i As Long Dim p1 As Long Dim p2 As Long Dim r As String i = 2 Do While i < Len(s) Select Case Mid(s, i, 1) Case "0" To "7" r = r & Chr(CLng("&H" & Mid(s, i, 2))) Case "C", "D" p1 = CLng("&H" & Mid(s, i, 2)) - 192 i = i + 3 p2 = CLng("&H" & Mid(s, i, 2)) - 128 r = r & ChrW(64 * p1 + p2) Case Else ' Not handled End Select i = i + 3 Loop DecodeQP2 = r End Function Function EncodeQP2(s As String) As String Dim i As Long Dim p1 As Long Dim p2 As Long Dim r As String Dim n As Long For i = 1 To Len(s) n = AscW(Mid(s, i, 1)) If n < 128 Then r = r & "%" & Hex(n) ElseIf n < 2048 Then p1 = n \ 64 r = r & "%" & Hex(p1 + 192) p2 = n Mod 64 r = r & "%" & Hex(p2 + 128) Else End If Next i EncodeQP2 = r End Function End Module النتيجة: تغلبنا على مشكلة اللغة العربية في الكونسول.. ملاحظة مهمة: أغلق الأنتي فايروس قبل التجربة لإن الدالة ( CreateProcessA ) يصنفها الأنتي فايروس كدالة مشبوهة لإنها تقوم بإنشاء عملية في النظام لمن يريد التجربة ارفقت لكم ملفات المشروع كاملة.. تحياتي لكم.. app.rar تم تعديل يونيو 7, 2021 بواسطه SEMO.Pa3x 2
jjafferr قام بنشر يونيو 8, 2021 قام بنشر يونيو 8, 2021 8 ساعات مضت, SEMO.Pa3x said: اغلق الأنتي فايروس قبل التجربة انا استخدم كاسبرسكاي Kaspersky وما اعطاني اي خطأ 🙂 8 ساعات مضت, SEMO.Pa3x said: تغلبنا على مشكلة اللغة العربية في الكونسول جميل جدا ، الدالة MainRedirect ربطت جميع مكونات المشروع ، ويتم وضع المتغيرات/Parameters والمسار للملف التنفيذي ، جميع هذا في سطر واحد 🙂 والملف التنفيذي app.exe () يأخذ/يرسل قيمة واحدة ، وبكل بساطة يمكن اعطائه اكثر من قيمة ، مثل رقم الشركة/المؤسسة/المدرسة واسم المستخدم وكلمة المرور/السر وووو ، ومن ثم يُرجع اكثر من قيمة (كمصفوفة مثلا) ومنها رقم الفاتورة الالكترونية 🙂 يعني الآن ادوات التواصل بين ملف Net. والاكسس اصبحت شبة جاهزة ، شكرا اخوي حسنين 🙂 ، ومربط الفرس (البرنامج) الآن في يدي اخونا حسين 🙂 (قد تستطيع عمل برويمج "تصغير برنامج 🙂" للمتغيرات المطلوبة لفريق الاكسس ، على ان تواصل برنامجك المتكامل بطريقة متوازية 🙂 ، خصوصا واننا المبرمجين نتعامل مع الكود كمرحلة اولى ، تاركين الواجهات واصطياد اخطاء ادخالات المستخدم كمرحلة تالية 🙂) جعفر 1
jjafferr قام بنشر يونيو 9, 2021 قام بنشر يونيو 9, 2021 السلام عليكم 🙂 اخي حسنين @SEMO.Pa3x 19 ساعات مضت, SEMO.Pa3x said: عليكم السلام.. انا لم اجرب ربط الأكسس اون لاين بمؤسسة او شركة او غيره لكن اذا كانت تلك المؤسسة وفرت لك Web API سيمكنك ذلك من قراءة وارسال البيانات عبر الـ HTTP REQUEST اخونا حسين @د.كاف يار وضع رابط مشروع الضوابط والمتطلبات والمواصفات الفنية والقواعد الإجرائية اللازمة لتنفيذ أحكام لائحة الفوترة الإلكترونية والذي قد تجد فيه المكتبات و API و SDK المطلوبة للبدء في تحليل الامر 🙂 اخي حسين ، اذا محتاج بيانات مؤسسات لبدء العمل على البرنامج ، فنستطيع ان شاء الله طلبها من بعض الاخوة الاعضاء المشاركين 🙂 جعفر
moh_prof قام بنشر يوليو 7, 2021 قام بنشر يوليو 7, 2021 السلام عليكم ورحمة الله وبركاتة بخصوص موضوع الفاتورة الاليكترونية والتعامل مع API الخاصة بها فالموضوع يحتاج الى التالى :- 1- استخدام لغة برمجة قوية ويفضل C# .NET Core 2 - معرفة بمبادئ التعامل مع ال API 3 - بيانات فعلية لشركة لها السماحية للوصول لموقع الهيئة 4 - عملية توقيع الفواتير تحتاج الى Token وهو عبارة عن USB Device مخزن عليها بيانات الشركة 5 - معرفة ايضا بعمليا الارسال POST والاستقبال GET 6- معرفة تفاصيل الفاتورة المطلوبة من الهيئة لأنة يتم إضافة بنود جديدة بخلاف الفاتورة العادية الحمد لله لدى الخبرة فى ذلك وقمت بربط العديد من الشركات بمصلحة الضرائب المصرية ... وهي مشابهة للسعودية ان شاء الله فى حالة االرغبة فى الاستفسار انا موجود
Mohameddd200300 قام بنشر يوليو 7, 2021 قام بنشر يوليو 7, 2021 اسلام عليكم ورحمة الله وبركاته اخواني الكرام تابعت معكم كل المواضيع المذكوره أعلاه ولا كن هناك نقطه لام تتطرقو لها وهو الشرط الثالث في هيئة الزكاة والدخل وها ان يكون متوافق مع نضام الأمن السيبراني واتوقع ان اكسس. مارح يتوافق معها بسبب ضعف الحماية فيه وايضا اتوقع ان حتا لو كان برنامج مصصم الوجهات في فيجول استديو وقاعدة البيانات اكسس. اتوقع راح يرتفض . هذا وجهت نضري فشاركوني رايكم.
moh_prof قام بنشر يوليو 8, 2021 قام بنشر يوليو 8, 2021 السلام عليكم ورحمة الله وبركاتة اعتقد ان عملية الامان لا دال فيها ولكن .. المقصود بها ليس امان تخزين البيانات ولكن امان ارسال البيانات وهو بالفعل يتم عن طريق تشفير محتوى الفاتورة وايضا استخام التوقيع الاليكترونى للتاكد من سلامة البيانات المرسلة هذا ما لاحضناه فى الفاتورة المصرية
العارف بالله قام بنشر يوليو 22, 2021 قام بنشر يوليو 22, 2021 (معدل) On 7/7/2021 at 5:09 PM, moh_prof said: السلام عليكم ورحمة الله وبركاتة بخصوص موضوع الفاتورة الاليكترونية والتعامل مع API الخاصة بها فالموضوع يحتاج الى التالى :- 1- استخدام لغة برمجة قوية ويفضل C# .NET Core 2 - معرفة بمبادئ التعامل مع ال API 3 - بيانات فعلية لشركة لها السماحية للوصول لموقع الهيئة 4 - عملية توقيع الفواتير تحتاج الى Token وهو عبارة عن USB Device مخزن عليها بيانات الشركة 5 - معرفة ايضا بعمليا الارسال POST والاستقبال GET 6- معرفة تفاصيل الفاتورة المطلوبة من الهيئة لأنة يتم إضافة بنود جديدة بخلاف الفاتورة العادية الحمد لله لدى الخبرة فى ذلك وقمت بربط العديد من الشركات بمصلحة الضرائب المصرية ... وهي مشابهة للسعودية ان شاء الله فى حالة االرغبة فى الاستفسار انا موجود اخي الغالي وفقك الله اتمنى منك المساهمة بما توصلت اليه هنا في هذا المنتدى ليستغاد الجميع تم تعديل يوليو 22, 2021 بواسطه العارف بالله
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.