في بعض الاحيان قد تحتاج الى كتابة كود لمراقبة الملفات الموجودة في الحافظة Clipboard ، وأدنى ما تحتاجه غالبا هو معرفة المسار الكامل للملف والعملية ادت الى وضع الملف في الحافظة سواء كانت نسخ copy او قص Cut ، قد تتخيل لوهلة أن العملية قد تكون معقدة وصعبة للغاية ، لكن دعني اخبرك بان الكائن My.computer.clipboard الخاص بالتعامل مع حافظة النظام يحتوي على طرق Methods تسهل معرفه محتوى الحافظة سواء كان صوت او نص او ملفات ، فلنتابع معا الفكرة التي اقتبستها من احد المواقع الاجنبية .
الطريقة GetFileDropList تعود لنا بـ Collection تمثل قائمة بالملفات الموجودة في الذاكرة ، وسيكون بإمكاننا بسهوله كتابة كود كالتالي للحصول عليها في اداة TextBox متعددة الاسطر:
If My.Computer.Clipboard.ContainsFileDropList = True Then Dim FileNameCollection As Collections.Specialized.StringCollection = _ My.Computer.Clipboard.GetFileDropList() For Each FileName As String In FileNameCollection
TextBox1.AppendText(FileName & vbNewLine) Next
End If
|
هكذا نكون قد تمكنا من الحصول على قائمة بأسماء الملفات ، والآن نرغب في الحصول على الاجراء الذي أدى الى وجود هذه الملفات في الحافظة ، هل هو نسخ Copy أم نقل Move ؟
للحصول على نوع الاجراء Drop Effect Type، سنقوم بعمل كائن من النوع Object ونسند له القيمة:
|
My.Computer.Clipboard.GetData("Preferred DropEffect")
|
، نقوم بعدها بقراءه اول اربع بايتات الى مصفوفة ، يمثل الحرف الأول منها نوع الاجراء ، وهو المهم هنا !
السطور التالية توضح ذلك :
|
Dim DropEffectData(3) As Byte Dim DropEffectCheck As Object = _ My.Computer.Clipboard.GetData("Preferred DropEffect") DropEffectCheck.Read(DropEffectData, 0, DropEffectData.Length)
|
والآن اصبحنا جاهزين تماما للقيام بالمهمه الكاملة ، لذلك قمت بوضع مثال بسيط هذا هو الكود الخاص به :
‘*>——————————————————————- ‘*>Handle Droplist ‘*>——————————————————————- If My.Computer.Clipboard.ContainsFileDropList() Then
‘*>——————————————————————- ‘*>Get DropEffect Type ‘*>——————————————————————- Dim DropEffectData(3) As Byte Dim DropEffectCheck As Object = _ My.Computer.Clipboard.GetData("Preferred DropEffect") DropEffectCheck.Read(DropEffectData, 0, DropEffectData.Length)
Dim DropEff As DragDropEffects Dim DropEffType As String
Select Case DropEffectData(0) Case 2 DropEff = DragDropEffects.Move DropEffType = "Move" Case 5 DropEff = DragDropEffects.Copy DropEffType = "Copy" Case Else DropEffType = "???" End Select
DropEffect.Text = DropEffType
‘*>——————————————————————- ‘*>Get File Names ‘*>——————————————————————- Dim FileNameCollection As Collections.Specialized.StringCollection = _ My.Computer.Clipboard.GetFileDropList() For Each FileName As String In FileNameCollection
DataText.AppendText(FileName & vbNewLine) Next
End If
|

أحدث التعليقات