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

كيفية استعمل DoEvents

مغلق
بدأه micheal R jordan في 17 مايو 2007 · 12 رد · 1,296 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أحاول تحميل بعض المللفات من الانترنيت باستخدام URLDownloadToFile

المشكلة هي أن DoEvents لا تعمل بالشكل المطلوب , وكأن البرنامج توقف عن العمل

وهذا هو الكود

For i = 0 To LstLinks.ListCount - 1
DoEvents
URLDownloadToFile 0,  LstLinks.List(i), TxtTarget, 0, 0

Next

أرجو المساعدة

البرنامج بسيط بعد الحصول على URLs ووضعهم في list box

يقوم بتحميلهم الواحد تلو الاخر

ولا يزال موضوع الحجم حجمه 0

/index.php?showtopic=125587

كما يقال

هل من مساعدة

#2

صحيح و لم أفكر بحل جذرى لها لأنى وجدت طريقة أفضل لتنزيل الملفات , و هى ايضا جون الأعتماد على APIs :rolleyes: و ولا حتى أدوات خارجية :

Download files from the Web (No Winsock)

#3

اخي الـ DoEvents

عادة يتم استخدامها في أوامر اتخاذ القرار مثل for و while وغيرها .. أو اي كتله برمجية تأخذ وقت كبير في تنفيذ العمل مما يسبب بطئ في على مستوى البرنامج بالكامل لفتره ينتهي فيها المعالج من الأوامر الخاصة بتلك الدالة او الكتلة البرمجية .. لذلك تستخدم كي توزع مهمام المعالج في تنفيذ العمل على اكثر من برنامج اي الإستجابة لإي حدث اخر بجانب ما يقوم به الأن .

واعتقد ان المشكلة هي في الدالة URLDownloadToFile فقد يكون هناك خطب ماء لم تتمكن من معالجة الأوامر الممررة لها لذلك تسبب هذا التعليق لأن URLDownloadToFile هي عبارة عن دالة لها ايضا اوامر خاصة بها حسب الإتصال لديك ..

راجع الرابط التالي قد يفيدك :

http://www.vbforums.com/showthread.php?t=214801

http://www.vbfrance.com/k-code-urldownloadtofile.aspx

#4

يمكن ان توزع تنزيل الملفات بطريقة متوازية او متتالية او الاثنين معا

اى مثلا اذا ذادت العناوين عن 5 يكون التنزيل متتالى وحاول الا تجعلها فى loop اجعلها مثلا فى time واعمل له عداد كل ثانية يقوم بتنفيز امر

هذا الكلام لن ينفع مع الملفات الكبيرة على الانترنت فاذا كنت تنزى ان تعمل برنامج DownLoad فابتعد عن دوال ال APi والادوات التى تقوم بالتنزيل انما ستتجه الى التعامل على مستوى الاتصال المباشر واستخدام بروتوكول نقل الملفات

هناك شرح فى توقيعى لكن احس ان اناس تستصعب الامر لكن ان شاء الله ساقوم بعمل واحد بس ادعولى اخلص

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#5

مشكلتك ليس في Doevents بل في URLDownloadToFile

حيث في مثل هذه الحالة عند استخدام doevents يمكنك فقط الضغط على زر مثلا للتوقف او اعادة رسم الشاشة بين الملف والاخر اي عند الدخول الى

URLDownloadToFile

لا يمكن عمل شيء حتى الانتهاء

اما اذا اردت مثلا اظهار prgoressbar او شيء اخر يمكنك الرجوع الى المقالة التي تكلم عنها msayed2004 حيث يتم استخدام التنزيل المتزامن بها

#6

شكرا لكم يا إخوان

إني أستعمل تحميا ملفات html بعض الدروس إلى ما إلا ذلك

وأنا في الحقيقة لا أستعمل فقط

URLDownloadToFile

بل حتى URLDownloadToCacheFile

ونفس المشكل قائم

وكما قلت أريد التحميل فقط من أجلي أما الملفات الكبيرة فأستعمل Internet Downlaod Manager

بعض الامور وليس كلها

أقولها وأكررها لو جمعت :lol: جميع برامج العالم كلها سيأتي يوم تحتاج فيه إلى شيء غير موجود في هذه المليارات من البرامج

وكن متأكدا من ذلك

انا أتعلم وأجرب وكما قلت سابقا الافضل والاحسن

وشكرا لكم

وهناك أمر أخر

لقد قمت بعمل AUTOMATION لل IDM لكنها غير كافية هل عند احد فكرة عن إرسال مجموعة من الروابط مع مكان تخزينها ادون المرور على IDM

#7

وضح أكتر.

فى سؤالك تكلمت عن الدالة المذكورة و فى مشاركتك الأخيرة الدنيا أتلخبطت.

#8

لا والله ما عاش مين يلخبطك والله

كل ما أريد قوله ان هناك دالة API أخرى بها نفس المشكل ألا وهي

URLDownloadToCacheFile

هذا هو المهم

من ناحية أخرى فقط للمعلومية يمكن أن تقوم ب AUTOMATION للINTERNETDOWNLOAD MANAGER

الافضل في عالم التحميل غير أن ال AUTOMATION ليست جيدة

وأي شيء آخر لا تعره اهتمام فقط أردت القول أنني أستعمل INTERNETDOWNLOAD MANAGER

للتحميل

وهذا مثال للAUTOMATION

Private Sub Command1_Click()
Dim idm1 As CIDMLinkTransmitter
Dim referer As String
Dim cookie As String
Dim postData As String
Dim user As String
Dim password As String
Set idm1 = CreateObject("IDMan.CIDMLinkTransmitter")
idm1.SendLinkToIDM "http://www.internetdownloadmanager.com/idman401.exe",
referrer, cookie, postData, user, password, "C:\", "idman401.exe", 0
End Sub

آمل أن يكون قد وصل الامر

#9

يعنى الهدف من ده كله أنك تعمل Accelerated Download ؟

#10

السلام عليكم

يمكنك قول ذلك لكن الهدف الرئيسي الذي أريده هو جعلل DoEvents تعمل

هذا هو المراد اخي لانني لا استطيع عمل أي شيء آخر في البرنامج إلى أن ينتهي من تحميل الملفات

وبدأت أظن انه لا حل

#11

سيدى الفاضل أنا حطيت رابط قوق لطريقة ممتازة فىى الـ Download ايه المشكلة فى أنك تستعملها ؟!

#12

حسب ما فهمت منك اخر شيء انك تريد تنزيل الملفات مع الاستمرار في العمل بالبرنامج وهذا ما لا تحققه doevents اي انت بحاجة الى MutithreadIng وهذا ما لا يحققه مشروع الفيجوال بيسك العادي لكن

يوجد حل لمثل هذا الامر وهو عمل مشروع activex exe حيث تطلب امر التنزيل وتستمر في العمل وعند الانتهاء من التنزيل يتم اعلامك عن طريق الاجراءات

اتصور عقدنا الحل :s

#13

السلام عليكم

المثال جيد يا أخي ويعمل بشكل جيد

أردت فقط أن أعرف المشكل من أصلو مع DoEvents

وقد حلت شكرا يا إخوان

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

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

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

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

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

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