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

برنامجي يعمل على أجهزة ، وأخرى لا يعمل ؟؟؟ ما هو الحل

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

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

تحية طيبة لكم

مشكلتي أني قمت بتصميم برنامج وقمت بعمل تحزيم له ببرنامج Setup Factory 7

وتأكد من جميع ملفات DLL و OCX التي يحتاجها البرنامج ووضعتها في الباكيج من مسارها .

وقمت بتجربة البرنامج على النحو التالي :

1- من المشروع مباشرة (( يعمل ))

2- على جهازي نفسه بعد فكّه من الحزمة (( لا يعمل ؟؟ ))

3- على أجهزة العملاء (( يعمل على بعضها والبعض الآخر لا يعمل ))

ولكي يكون سؤالي أكثر شمولية ، فكما ذكرت أني جربته على جهازي ولم يعمل حيث عند تشغيل البرنامج تتحول صورة مؤشر الفأرة إلى شكل الساعة الرملية

ثم تعود كما كانت ، وأبحث عن البرنامج في الباك جراوند ولا أجده وهذا يعني أنه لم يعمل .

أما على أجهزة العملاء ، فبعض الأجهزة يعمل عليها والبعض الآخر لا يعمل كما هو الحال في جهازي .

وطبعاً من البروجيكت يعمل بكفاءة عالية بدون أية مشاكل .

وللمعلومية البرنامج مصمم بإصدارة رقم 6 وهو لا يرتبط بأي شبكة .

ألا ترون أن المشكلة غريبة ، حيث أنه يعمل على أجهزة وأخرى لا يعمل عليها ولا تظهر أي رسالة خطأ .

وللمعلومية أيضاً ، أستخدم عند تشغيل البرنامج mutex الخاصة بمنع تشغيل البرنامج أكثر من مرة ، وهذا هو الكود الخاص به :

class يسمى بـ : clsMutex :

Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Type SECURITY_ATTRIBUTES
	nLength As Long
	lpSecurityDescriptor As Long
	bInheritHandle As Long
End Type

Private Const ERROR_ALREADY_EXISTS = 183&

Private m_hMutex As Long

Public Function CheckMutex(MutexName As String) As Boolean

Dim s As SECURITY_ATTRIBUTES
m_hMutex = CreateMutex(s, 0, MutexName)

If Err.LastDllError = ERROR_ALREADY_EXISTS Then
	CheckMutex = False
Else
	CheckMutex = True
End If

End Function


Private Sub Class_Terminate()
CloseHandle m_hMutex
End Sub

والكود التالي في حدث Form_Load عند بدء تشغيل البرنامج :

اقتباس
Dim mut As clsMutex ' هذا التعريف في General طبعاً

Set mut = New clsMutex

If Not mut.CheckMutex("ProgNa") Then '

MsgBox "لا يمكن تشغيل أكثر من نسخة للبرنامج", vbCritical, "خطأ"

End

End If

وإذا قال أحدكم أن المشكلة تكمن في الميوتكس ، ويجب عليك استخدام APP.PrevInstance فأقول له لا تخف جربتها ونفس الشئ ، يعمل على أجهزة وأخرى لا يعمل

أرجو من الله ثم منكم أن تجدو لي حل لهذه المشكلة الغريبة والمعقدة ...

ودمتم سالمين إن شاء الله

محبكم

#2

هل يصدر صوت ما عند التشغيل (أثناء وجود السعة الرملية) ؟

ماذا يحدث فى الـ Form_Load غير تعيين الـ Mutex و هل يتم تنفيذ اى شئ قبله (فى الـ Sub Main مثلا) ؟

#3

أهلا أخي msayed2004 أسعدني مرورك

بالنسبة لحدث التحميل في الفورم فلا يوجد سوى أمر اتصال بقاعدة البيانات .

وللمعلومية قمت بإزالة أي أمر في الفورم لود ثم قمت بعمل باكيدج للبرنامج وتثبيته ونفس المشكلة موجودة .

للمعلومية ، اكتشفت شئ غريب ، وهو أني قمت بفتح إدارة المهام Task Manager وقمت بتشغيل البرنامج فوجدت ظهور برنامج يسمى sys fader

ثم يختفي وإليك صورته :

get-1-2008-9ksa_com_bi6l1y2g.JPG

وعندما بحثت عنه وجدت أنه قد يكون فايروس لا أعلم مصدره ، فهل من الممكن أن يكون قد أضيف إلى الحزمة ؟

أتمنى أن أجد الحل لديك أخي msayed2004 كما عهدنا منك .

موفق إن شاء ...

#4

هذا فيروس ياأخي

وليس له علاقة بالمشكلة

على العموم انصحك بالتخلص منه

وفقك الله

#5

شكرا أخي على ردك

ولكن حتى لو كان فايروس ، هل هو المتسبب بعطب الملف التنفيذي أم ماذا؟؟ وكما أسلفت سابقاً ، البرنامج يعمل على بعض الأجهزة والأخرى لا يعمل !!

إذا المشكلة لا زالت قائمة .

شكرا لك مرة أخرى

#6

بالنسبة للـ ففى حاجة من الـ XP بالأسم ده و ظهورها بالطريقة دى معناه اما فيروس بنفس الأسم او مشكلة فيه (هو خاص بالـ Visual effects يعنى ممكن تلغيه خالص).

بالنسبة لمشكلتك : جرب تشيل الـ Mutex خالص و جربه مره فى الـ Sub Main لوحده.

و تأكد فى كل الحالات من تخلصك من الـ Mutex عند أغلاق البرنامج.

سبب اهتمامى بيه هو انه عمل مشاكل زى كده معايا زمان لكن البرنامج كان بيعمل صوت Beep و بعدين يختفى.

#7

أهلا أخي msayed :

بالنسبة للميوتكس فقد ألغيته وألغيت أي كود بالفورم ونفس المشكلة تظهر معي .

أما بالنسبة للصوت ، نعم يظهر صوت خطأ عند تشغيل التطبيق .

وللمعلومية فقد قمت بعمل فورمات للجهاز وظهرت لدي مشكلة أخرى >>>>>>>>>>>>>>>>>> ذبحتكم بالمشاكل :)

المشكلة في المشروع وهي ظهور رسالة خطأ عند فتح المشروع ، وعند تشغيل المشروع تظهر رسالة تقول error during file

ويبدو أن المشكلة في ملفات الـ log الخاصة بالـ forms ، هل من الممكن أن الـ common files فيها مشكلة ، حيث أني استخدم VB6 SP6 وهي ما كنت أستخدمها قبل الفورمات ، وجميع الأدوات مسجلة أيضاً ...

أنتظر حل منكم ، مع خالص التحية .

وشكرا أخي msayed على مساعدتك والشكر موصول للجميع

#8

كتجربة حاول تستخدم آخر أصدار من الـ VB6 Run Time Files

يبدوا أن حكايتك حكاية :haha:

(أمزح معك).

#9

جرب نسخة أخرى من VB6 غير الموجودة عندك

أعني اسطوانة أخرى

من أقوال الأئمة

الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".

الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".

الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".

الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".

علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".

وكل خير في اتباع من سلف وكل شر في ابتداع من خلف

#10

السلام عليكم

طبعا الموضوع قديم وأنا خرجت منه لاني لم أجد الحل

ولكن بعد أن وجدت الحل قلت أنه من الواجب اني أخبركم فيه .

المشكلة كانت إني كنت أستخدم مع البرنامج ملف manifest الخاص بتغيير ستايل البرنامج الي ويندوز XP وقت التشغيل .

ولكن ملف الـ manifest وحده لا يكفي !! لأن IDE وحدها فقط هي من تتأثر ، أما البرنامج فلازال يعمل تحت بيئة User32.Dll .

ولحل هذه المشكلة كان لابد من أن يرتبط البرنامج بـ ComCtl32.dll قبل تشغيل أي عناصر مرئية ، أي يجب تعريف البرنامج أنه مرتبط بها في Form_Initialize()

وكل ما علينا فعله هو التالي :

Private Declare Sub InitCommonControls Lib "comctl32.dll" ()

Private Sub Form_Initialize()
	InitCommonControls
End Sub

ولمزيد من المعلومات وجدتها في الرابط التالي :

http://support.microsoft.com/default.aspx?...kb;en-us;309366

شكرا لكم أحبتي في الله

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

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

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

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

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