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

سؤال إلي يجاوبه أعتبره خبير

مغلق
بدأه hg_12345 في 18 نوفمبر 2004 · 18 رد · 1,342 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أريد كود للفيجول بيسك وظيفته ما يلي:

عندما يقوم أحد بنسخ ملف معين يظهر في لبرنامج تنبيه أو رسالة

يعني أنا عندي ملف لا أريد من أحد أن ينسخه

و في حال نسخه يظهر لي تنبيه

مثلاً : يكون البرنامج شغال و مخفي

و أي واحد ينسخ الملف تظهر رسالة تنبه بمنع نسخه

و أعتبر يلي يعرف يساوي هادى الكود خبير جداً جداً

و اتمنى مساعدتي للضرورة القصوى

و كل عام وأنتم بخير

#2

لدي فكرة وهي

بمكنك بأستخدام دوال api من جعل الملف كلمف نظام وغير قابل للنقل

ولا داعي لجعل البرنامج يعمل في الخفاء لأنه مهما فعلت فيمكن أن يقوم المستخدم بإغلاق البرنامج عن طريق برنامج مدير المهام task manager

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

أخيك عبدالرحمن محمد

__________________________________________

لا يأس مع البرمجة ولا برمجة مع اليأس

__________________________________________

#3

آسف جداً كنت أظن أنك تريد ألا ينقل الملف أنا آسف جدا

ولكن إن شاء الله المشلكة لها حل

#4

لدي فكره !

معذرة فهي حقيقه ..

طبيعي أنك تعرف دوال API ولكن هل تعرف كيفية مراقبتها ؟

المطلوب منك عمل برنامج يعمل ك DEBUGER يقوم بمراقبة دالة النسخ واعتراضها

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

ملحوظه دالة النسخ هي :

BOOL CopyFile(

    LPCTSTR  lpExistingFileName,	// address of name of an existing file 
    LPCTSTR  lpNewFileName,	// address of filename to copy to 
    BOOL  bFailIfExists  // flag for operation if file exists 
   );

تم تعديل هذه المشاركة بواسطة Asm4all في 19 نوفمبر 2004 في 04:07

#5

السلام عليكم

ضع هذه في مؤقت

Clipboard.Clear

و بعدها حاول نسخ ما شئت

اذا اراد الله بعبد خيراً فقهه في دينه

((إياكم والغلو في الدين فإنما هلك من كان قبلكم بالغلو في الدين )).

( إن هذا الدين يسر ولن يشاد هذا الدين إلا غلبه فأوغلوا فيه برفق )

( هلك المتنطعون ، هلك المتنطعون ، هلك المتنطعون )

<span style='font-size:14pt;line-height:100%'>طريقة سريعة لحفظ كتاب الله العزيز</span>

<span style='font-size:14pt;line-height:100%'>تعرف على عباقرة الكذب</span>

#6

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

الحل هو تشفير الملف الذي لا نريد نسخه بحيث لا يظهر للمسخدم أصلاً

#7
/index.php?showtopic=50860

اذا اراد الله بعبد خيراً فقهه في دينه

((إياكم والغلو في الدين فإنما هلك من كان قبلكم بالغلو في الدين )).

( إن هذا الدين يسر ولن يشاد هذا الدين إلا غلبه فأوغلوا فيه برفق )

( هلك المتنطعون ، هلك المتنطعون ، هلك المتنطعون )

<span style='font-size:14pt;line-height:100%'>طريقة سريعة لحفظ كتاب الله العزيز</span>

<span style='font-size:14pt;line-height:100%'>تعرف على عباقرة الكذب</span>

#8

هناك حل آخر

و هو تشفير الملف

و لكن ليس كل الملف بل إضافة شيء معين او بالأحرى تخريب منطقة الـ hex من الملف أثناء عمل البرنامج و عند إغلاق البرنامج إغلاقاً نظامياً ((بضغط مفاتيح معينة مثلاً )) فإن البرنامج يقوم بإصلاح الملف و بهذا فإن الملف الذي قد قمت بنسخة أثناء تشغيل البرنامج لن يفتح أبداً

تحياتي

#9

ولكن اثناء التشغيل يمكن نسخه لأن البرنامج الذي يستخدمه قد فك تشفيره او نحو ذلك

اذا اراد الله بعبد خيراً فقهه في دينه

((إياكم والغلو في الدين فإنما هلك من كان قبلكم بالغلو في الدين )).

( إن هذا الدين يسر ولن يشاد هذا الدين إلا غلبه فأوغلوا فيه برفق )

( هلك المتنطعون ، هلك المتنطعون ، هلك المتنطعون )

<span style='font-size:14pt;line-height:100%'>طريقة سريعة لحفظ كتاب الله العزيز</span>

<span style='font-size:14pt;line-height:100%'>تعرف على عباقرة الكذب</span>

#10

لأ لأ أخي العزيز عامر

أستاذي الكريم

البرنامج الذي نعمله نحن نخرب فيه منطقة الهكس على كيفنا ماشي

و بما ان البرنامج سوف يبقى شغال إلى أن يامره مبرمجه بالتوقف عن طريق حركة معينة أو امر معين أو في طريقة معينة المهم

الملف عند لعبث بمنطة الـ Hex الحساسة جداً ينعطب تقريباً و يعد غير صالحاً للعمل .

و حتى إذا قام بنسخه فإنه سوف ينسخ نسخة معطوبة .

أرجو ان تكون الفكرة وصلت

تحياتي

#11

كما قال لي الأستاذ عامر ضع الملف في Resource File

#12

فكرة جميلة

لكن لا أعرف طريقة عملها

ياله تبدأوا فيها لو سمحتم

#13

أي فكرة تقصد أخي الكريم

و على ذكر الـ resource file

فأي مستخدم يتسطيع فتح الملف و أخذ محتوياته .

تحياتي

#14

ارجو منك ارسال رساله تفصيليه عن مشروعك و كيف سوف يتم عرض الملفات ....الاصوات و الصور و غيرها.

و اعد ان شاء الله ان لن يستطيع احد ان يستخرج الملفات من برنامجك مهما يكن.

ارسل الرساله على البريد الخاص في المنتدى.

اذا اراد الله بعبد خيراً فقهه في دينه

((إياكم والغلو في الدين فإنما هلك من كان قبلكم بالغلو في الدين )).

( إن هذا الدين يسر ولن يشاد هذا الدين إلا غلبه فأوغلوا فيه برفق )

( هلك المتنطعون ، هلك المتنطعون ، هلك المتنطعون )

<span style='font-size:14pt;line-height:100%'>طريقة سريعة لحفظ كتاب الله العزيز</span>

<span style='font-size:14pt;line-height:100%'>تعرف على عباقرة الكذب</span>

#15

استاذي مختار

كيف يمكن ان نشفر ملف صوتي يستخدمه برنامجنا من دون فك تشفيره اثنا التشغيل للملف.

ارجو منك الافاده.

و شكرا لك جزيل الشكر

اذا اراد الله بعبد خيراً فقهه في دينه

((إياكم والغلو في الدين فإنما هلك من كان قبلكم بالغلو في الدين )).

( إن هذا الدين يسر ولن يشاد هذا الدين إلا غلبه فأوغلوا فيه برفق )

( هلك المتنطعون ، هلك المتنطعون ، هلك المتنطعون )

<span style='font-size:14pt;line-height:100%'>طريقة سريعة لحفظ كتاب الله العزيز</span>

<span style='font-size:14pt;line-height:100%'>تعرف على عباقرة الكذب</span>

#16

السلام عليكم

أولاً أستاذنا الكريم عامر خريم ....

سوف أجهز لك مثال في الأيام القليلة المقبلة و أضعه هنا أو في موضوع منفصل و سيوضح المثال كل شيء غامض بالنسبة لأغلب القراء

و لكن هذه الأيام أيام مذاكرات و الله يشهد ان فوق راسي شغل كثير و لكن أعدك أن أصنع لكم المثال

تحياتي

#17
اقتباس
أي فكرة تقصد أخي الكريم
الملف عند لعبث بمنطة الـ Hex الحساسة جداً ينعطب تقريباً و يعد غير صالحاً للعمل
#18

يا شباب شو صار بالمطلوب !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

001 001 001

#19

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

الجواب سهل من كتاب:

موقع الكتاب والأمثلة على الإنترنت:

www.VisualBasicNet.Jeeran.com

الفصل العاشر

استخدم

أداة مُراقبة نظام الملفّات FileSystemWatcher

تعريفها:

تسمح لك هذه الأداة التي لا تمتلك واجهة استخدام، بمراقبة الملفّات والمجلّدات لمعرفة ما يحدث لها من تغيير (إنشاء، حذف، تغيير الاسم، تعديل محتويات ملفّ)، سواء على جهازك أو عبر شبكة أو عبر الإنترنت.. وعند حدوث التغيير المحدّد في الملفّ الذي تراقبه، تطلق هذه الأداة أحد الأحداث لإخطارك بهذا التغيير.. وهذه الأحداث هي:

محتويات الملفّ تغيّرت Changed ـ إنشاء مجلّد أو ملفّ Created ـ حذف مجلّد أو ملفّ Deleted ـ تغيير اسم مجلّد أو ملفّ Renamed.

هذا بالإضافة إلى الحدث Error، الذي ينطلق عند حدوث تغييرات كثيرة بدرجة تعجز معها هذه الأداة عن ملاحقتها.

ولاستخدام هذه الأداة في مشروعك، اضغط شريط المكوّنات Components Tab في صندوق الأدوات Toolbox، وانقر مرّتين بالفأرة على الأيقونة FileSystemWatcher.. ستجد أنّ نسخة من هذه الأداة قد أضيفت إلى صينية الأدوات في مشروعك.

خصائصها:

يمكنك أن تستخدم نافذة الخصائص لاستعراض الخصائص التالية:

مرشّح التنبيه NotifyFilter:

استخدم هذه الخاصيّة لتحديد نوعيّة التغييرات التي تريد مراقبتها.. ويمكن اختيار قيم هذه الخاصيّة من المرقّم IO.NotifyFilters، وهي كالتالي:

Attributes

مراقبة تغيّر سمات الملفّ أو المجلّد.

CreationTime

مراقبة تغيّر تاريخ إنشاء الملفّ أو المجلّد.

DirectoryName

مراقبة تغيّر اسم المجلّد.

FileName

مراقبة تغيّر اسم الملفّ.

LastAccess

مراقبة تغيّر تاريخ آخر قراءة للملفّ أو المجلّد.

LastWrite

مراقبة تغيّر تاريخ آخر كتابة في الملفّ أو المجلّد.

Security

مراقبة تغيّر إعدادات حماية الملفّ أو المجلّد.

Size

مراقبة تغيّر حجم الملفّ أو المجلّد.

وطبعا في نافذة الخصائص لا تستطيع اختيار أكثر من قيمة واحدة من هذه القيم، ولكن في الكود، يمكنك دمج قيمتين معا، باستخدام العمليّة Or:

FSW1.NotifyFilter = IO.NotifyFilters.LastWrite Or IO.NotifyFilters.LastAccess

المسار Path:

استخدم هذه الخاصيّة لتحديد مسار المجلّد الذي تريد مراقبة ما به من ملفّات.

متضمنا المجلّدات الفرعيّة IncludeSubdirectories:

اجعل هذه الخاصيّة True لمراقبة المجلّدات الفرعيّة التي يحتويها المجلّد الذي تراقبه.

المرشّح Filter:

تمكّنك هذه الخاصيّة من تحديد نوعيّة الملفات التي تريد مراقبتها، فمثلا: يمكنك مراقبة الملفّات النصّيّة بجعل قيمة هذه الخاصيّة "*.txt" .. والقيمة الافتراضيّة لهذه الخاصيّة هي "*.*"، وذلك لمراقبة كلّ الملفّات من كلّ الأنواع.. فإذا أردت أن تراقب الملفات التي لا امتداد لها، فاجعل قيمة هذه الخاصيّة نصّا فارغا "".. وللأسف: لا يمكنك أن تحدّد أكثر من امتداد بهذه الخاصيّة، فإذا كان هذا حتميّا، فاستخدم نسختين من هذه الأداة، كل واحدة لمراقبة نوع ما!

تفعيل إطلاق الأحداث EnableRaisingEvents:

لبدء مراقبة الملفات، اجعل هذه الخاصيّة True.

حجم مساحة التخزين InternalBufferSize:

توضع التغييرات التي تحدث للملفّات في مخزن في الذاكرة قبل أن يتمّ إطلاق الأحداث، فإذا حدثت تغييرات أكثر وأسرع من اللازم، فإنّها تتجاوز مساحة التخزين، ممّا يؤدّى لإطلاق الحدث Error.. لهذا يمكنك باستخدام هذه الخاصيّة أن تزيد من مساحة التخزين في الذاكرة، وإن كان ذلك قد يؤثّر على أداء النظام، إذا اقتطعت مساحة ضخمة من الذاكرة.. والأفضل أن تتجنّب حدوث أيّ أخطاء، بالتقليل قدر المستطاع من عدد الملفّات والمجلّدات المراقبة، باستخدام خاصيتي المسار والمرشّح.

ويمكنك مضاعفة حجم مساحة التخزين في حدث الخطأ Error بجملة كالتالية:

FSW1.InternalBufferSize = 2 * FSW1.InternalBufferSize

مشروع FileSystemWatcher:( انظر الرابط)

على العموم، ستكون أوّل خطوة في تعاملك مع خلايا المجلدات والملفّات، هي أن تكتب في بداية الملفّ جملة الاستيراد التالية:

Imports System.IO

لا تنسَ ذلك، وإلا فلن تعمل الأمثلة التي ستجدها هنا.

في هذه المشروع، سنراقب الملفّات النصّيّة الموجود على المحرّك "\C:".

تعال نعدّ مراقب الملفّات في حدث تحميل النموذج كالآتي:

Private Sub Form1_Load(sender As Object, e As EventArgs) _

Handles MyBase.Load

FileSystemWatcher1.Path = "c:\"

FileSystemWatcher1.IncludeSubdirectories = False

FileSystemWatcher1.Filter = "*.txt"

FileSystemWatcher1.NotifyFilter = IO.NotifyFilters.CreationTime Or _

IO.NotifyFilters.LastWrite Or IO.NotifyFilters.LastAccess Or _

IO.NotifyFilters.FileName

FileSystemWatcher1.EnableRaisingEvents = False

End Sub

ويمكن للمستخدم بدء مراقبة الملفّات بضغط زر المراقبة.. ولو ضغطه ثانية يتمّ إيقاف المراقبة.. وسنغيّر عنوانه في كلّ مرّة ليدلّ على وظيفته.. هذا هو كود الزرّ:

Private Sub Button1_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Button1.Click

If Button1.Text = "بداية المراقبة" Then

FileSystemWatcher1.EnableRaisingEvents = True

Button1.Text = "إنهاء المراقبة"

Else

FileSystemWatcher1.EnableRaisingEvents = False

Button1.Text = "بداية المراقبة"

End If

End Sub

ونظرا لأنّ الأحداث Changed و Created و Deleted تشترك في نفس نوع المعاملات، فإنّ بإمكانك كتابة إجراء واحد يستجيب لها كلّها معا كالتالي:

Private Sub WatcherHandler(sender As Object, e _

As IO.FileSystemEventArgs) Handles _

FileSystemWatcher1.Changed, FileSystemWatcher1.Created, _

FileSystemWatcher1.Deleted

ListBox1.Items.Add(e.ChangeType & vbTab & e.FullPath)

End Sub

لاحظ أنّ المعلومات التي تخصّ الملفّ أو المجلّد ستجدها في خواصّ المعامل e، مثل نوع التغيير الذي حدث للملفّ أو المجلّد e.ChangeType، والمسار الكامل e.FullPath.. إلخ.

أمّا حدث تغيّر الاسم، فلا بدّ أن يكون له إجراء مستقلّ، وذلك لأنّ معامله e له نوع مختلف، حيث يمنحك خاصيّة OldFullPath التي تمكّنك من معرفة الاسم القديم للملفّ أو المجلّد قبل تغييره.

Private Sub FileSystemWatcher1_Renamed(ByVal sender As Object, _

ByVal e As System.IO.RenamedEventArgs) _

Handles FileSystemWatcher1.Renamed

ListBox1.Items.Add(e.ChangeType & vbTab & e.OldFullPath & _

" TO " & e.FullPath)

End Sub

وهذا هو حدث الخطأ، وفيه نوقف المراقبة حتّى نتمكّن من زيادة حجم مساحة التخزين Buffer، ثمّ نعود لمراقبة الملفات مرّة أخرى:

Private Sub FileSystemWatcher1_Error(ByVal sender As Object, _

e As IO.ErrorEventArgs) Handles FileSystemWatcher1.Error

Dim status As Boolean

status = FileSystemWatcher1.EnableRaisingEvents

FileSystemWatcher1.EnableRaisingEvents = False

FileSystemWatcher1.InternalBufferSize = _

2 * FileSystemWatcher1.InternalBufferSize

FileSystemWatcher1.EnableRaisingEvents = status

End Sub

أعتقد الآن أنّك قد صرت ضليعا في استخدام الملفّات.

FileSystemWatcher.rar

تم تعديل هذه المشاركة بواسطة EngQ8i في 22 ديسمبر 2004 في 15:58

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

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