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

التعامل مع الحافظة(الذاكرة) في الفيجوال

مغلق
بدأه موفق جمال زكريا في 13 ديسمبر 2002 · 18 رد · 7,534 مشاهدة · في قسم الدروس والمواضيع الهامة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام الله عليكم :

يوجد ست دوال في الفيجوال للتعامل مع الحافظة سأشرحها بالتفصيل :

1- GetText لجلب محتويات الحافظة .

فمثلاً قم بنسخ أي نص من الجهاز ثم قم بإنشاء زر واكتب الكود التالي :

Private Sub Command1_Click()

Text1.Text = Clipboard.GetText

End Sub

فتظهر في مربع النص النص الذي تم نسخه

2- ثانيا :Clipboard.Clear تقوم بمسح محتويات الحافظة .

اكتب الكود في زر :

Private Sub Command1_Click()

Clipboard.Clear

End Sub

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

3-ثالثاً : Clipboard.GetData لجلب صور أي للصق صورة ...

اضفط الزر printscreen من لوحة المفاتيح ثم اكتب الكود التالي في زر :

Private Sub Command1_Click()

Me.Picture = Clipboard.GetData

End Sub

فستلاحظ أنه تم لصق الصورة ...

وأي صورة تنسخها يتم لصقها هنا ...

ويمكنك أيضا بدلا من me إستخدام أداة الصور image أو picturebox أو أي أداة فيها خاصية إظهار صورة ..

4- رابعاً :Clipboard.SetData

لإرسال صورة إلة الذاكرة ....

أنشئ زر وأداة الصورة وضع داخلها صورة واكتب الكود التالي :

Private Sub Command1_Click()

Call Clipboard.SetData(Image1.Picture)

End Sub

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

5-خامساً :Clipboard.SetText لإرسال نص إلى الذاكرة .

اكتب الكود التالي :

Private Sub Command1_Click()

Clipboard.SetText ("بسم الذي لايضر مع إسمه شئ")

End Sub

ثم اذهب إلى أي برنامج نصوص واختار لصق فتلاحظ ظهور النص

بسم الذي لايضر مع إسمه شئ

6- سادساً :GetFormat للتحقق من نوع الغرض المنسوخ ..

تعطي الدالة إما false

أو true

الصيغة العامة :

Clipboard.GetFormat (format)

و format تأخذ القيم التالية :

Link &HBF00

Text 1

Bitmap 2

Metafile (.wmf files) 3

Device-independent bitmap 8

Color palette 9

فمثلاً اكتب الكود التالي ولاحظ :

MsgBox Clipboard.GetFormat(2), vbDefaultButton1, "mofakfree@hotmail.com"

إذا كنت قد نسخت صورة نقطية فتكون نتيجة الصندوق

true

وإذاغ كنت نسخت غير ذلك فتكون النتيجة

flase

لابد أنك فهمت ............... والحمد لله رب العالمين .... انتهت الكتابة الساعة الرابعة صباحاً ,,

أرجوا وأتمنى أن أكون قد يسرت لكم هذه الدوال الست ..... والله من وراء القصد ....

#2

لقد شرحت الأمر

Clipboard.Clear وهو يقوم بمسح المحتويات التي نسخناها إلى الذاكرة ...

فيمكن وضع الكود في في تايمير يقوم بمسح الشئ المنسوخ من الذاكرة قبل لصقه .... وبهذا نكون قدحققنا أكثر من فائدة ....

1- لصناعة فيروس مثلاَ وإرفاقه بملف ويكون الفورم شفاف فتكون قد عطلت ميزة النسخ واللصق في الجهاز ....

2- لقد أفادتني في أكثر من برنامج صنعته وهو بأني لاأريد أن سنسخ المعلومات من البرنامج بل أردي قراءة المعلومات فقط من برنامجي ::

كيف ؟.؟؟؟؟؟؟؟؟؟؟؟؟؟شلوني معكم ....

الكود

Private Sub Timer1_Timer()

Clipboard.Clear

End Sub

ولاتنسى أن تضع قيمة للتايمي

(gift)(f)

#3

لقد شرحت الأمر

Clipboard.Clear وهو يقوم بمسح المحتويات التي نسخناها إلى الذاكرة ...

فيمكن وضع الكود في في تايمير يقوم بمسح الشئ المنسوخ من الذاكرة قبل لصقه .... وبهذا نكون قدحققنا أكثر من فائدة ....

1- لصناعة فيروس مثلاَ وإرفاقه بملف ويكون الفورم شفاف فتكون قد عطلت ميزة النسخ واللصق في الجهاز ....

2- لقد أفادتني في أكثر من برنامج صنعته وهو بأني لاأريد أن سنسخ المعلومات من البرنامج بل أردي قراءة المعلومات فقط من برنامجي ::

كيف ؟.؟؟؟؟؟؟؟؟؟؟؟؟؟شلوني معكم ....

الكود

Private Sub Timer1_Timer()

Clipboard.Clear

End Sub

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

(gift)(f)

#4

السلام عليكم

الله يوفقك أخ/ موفق

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

فما السبب فى ذلك ؟؟؟

" وما توفيقى إلا بالله عليه توكلت وإليه أنيب "
-------------------------------------------------
قل : " لا حول ولا قوة إلا بالله "
-------------------------------------------------

#5

السلام عليكم :

أخي جرب تحديد الكتابة ... وغير نوع الخط إلى الخط العربي من الوورد ...

إذا لم تحل المشكلة جرب لصقة في الفيجوال وانظر ماذا ترى ...

لكي نتوصل إلى حل المشكلة ...........

أخوك موفق

(gift)(f)

#6

السلام عليكم

أخ / موفق ..

عند النسخ فى Word لا يتم النسخ بشكل مفهوم ( حروف غريبة ) مهما تم تغيير الخط ..

ولكن عند النسخ فى الVB فى نافذة الكود مثلا يتم النسخ بشكل صحيح ..؟؟!!

" وما توفيقى إلا بالله عليه توكلت وإليه أنيب "
-------------------------------------------------
قل : " لا حول ولا قوة إلا بالله "
-------------------------------------------------

#7

؟

" وما توفيقى إلا بالله عليه توكلت وإليه أنيب "
-------------------------------------------------
قل : " لا حول ولا قوة إلا بالله "
-------------------------------------------------

#8

السلام عليكم

ألا يوجد حل لمثل هذه المشكلة ؟؟؟؟؟

" وما توفيقى إلا بالله عليه توكلت وإليه أنيب "
-------------------------------------------------
قل : " لا حول ولا قوة إلا بالله "
-------------------------------------------------

#9

.

" وما توفيقى إلا بالله عليه توكلت وإليه أنيب "
-------------------------------------------------
قل : " لا حول ولا قوة إلا بالله "
-------------------------------------------------

#10

أخي يمكن أن تكوزن مشكلة في خطوط الجهاز عندك أو في نسخة الوورد ولايمكن ان نتبئ بذلك أعد تنصيب الأوفيس ..............

(gift)(f)

#11

شكرا لكم علي هذه الأفادة الكبيرة

#12

السلام عليكم

ليست المشكلة فى الWord بل فى الVB حيث عند النسخ فى المفكرة تحدث نفس المشكلة ..

" وما توفيقى إلا بالله عليه توكلت وإليه أنيب "
-------------------------------------------------
قل : " لا حول ولا قوة إلا بالله "
-------------------------------------------------

#13

موضوع رائع

#14

كيف حلك يا موفق جمال زكريا

لدي سؤال مهم جدا بالنسبة لي أرجو الاجابة بأسرع وقت

السؤال :

كيف يمكنني نسخ كل ما أكتبه إلى الحافظة

فمثلا كتبت سالم فكلمة سالم ينتسخ إلى الذاكرة فورا

أو بعبارة أخرى ينسخ كل ما أضغط على مفتاح معين

#15

أخي الكريم يجب عليك أستخدام

Clipboard.GetText

مع وضع الكود في التايمير ......

ويجب عليك وضع كود لنسخ ماتكتبة في التيكست بأن تحدد من البداية إلى النهاية وتسخدم الدالة setText .......

(gift)(f)

#16

لو تكرمت بوضع مثال مرفق لأكون لك من الشاكرين

#17
اا الفاروق اا كتب:
السلام عليكم

أخ / موفق ..

عند النسخ فى Word لا يتم النسخ بشكل مفهوم ( حروف غريبة ) مهما تم تغيير الخط ..

ولكن عند النسخ فى الVB فى نافذة الكود مثلا يتم النسخ بشكل صحيح ..؟؟!!

عندى نفس هذه المشكلة الان

ولكن لم يحلها احد من الساده الاعضاء

المشكلة باختصار :

عندما يتم نسخ اي كتابة عربية من الفيجوال بيسك ( وتكون اللغة المستخدمة فى تلك اللحظة هى الانجليزية ) يكون ناتج النسخ حروف غريبة وليست بالعربية

لكن اذا كانت اللغة المستخدمة ( فى الويندوز نفسه ) فى تلك اللحظة هى العربية ، فيتم النسخ بشكل صحيح ..

الا يوجد حل لتلك المشكلة ؟؟ :wacko:

#18

السلام عليكم :

اولا شكرا يا اخي موفق على هذا الموضوع .

ثانيا عندي سؤال او استيضاح معينهو :

في حاله وضعت الايعاز clipboard.clear في التايمر كما قلت سابقا هل سينفع في تخليصي من الفايروسات التي تستنسخ نفسها مثلا.

شكرا مره اخرى على موضوعك :rolleyes:

#19

السلام عليكم ....

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

ربما نلقي بعض اللوم على ضعف الدالة settext لكننا ننشد الحل ا.... المكشلة هي فعلاً كما قال الإخوة في الويندوز بأننا إذا أرسلنا نص إلى الحافظة وكانت اللغة في شريط المهام - شريط اللغة - عربي نسخ النص بنجاح وإلا فستظهر كتابة غير مفهومة ولذلك يجب تغير اللغة قبل إرسال أمر النسخ كالتالي :

Dim s As Long
If GetKeyboardLayout(0) = 67699721 Then
s = ActivateKeyboardLayout(1, 0)
End If

Clipboard.Clear
Clipboard.SetText Label1.Caption, 1

وطبعاً يجب تعريف ActivateKeyboardLayout وGetKeyboardLayout في موديل البرنامج كالتالي :

Public Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Public Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long

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

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