لوتس نوتس سيناريو القراءة / الكتابة ويندوز الحافظة
إذا كان لديك حاجة لقراءة الحافظة ويندوز (أو الكتابة إليه)، بينما في LotusScript، هذه الفئة مخصصة يجعل من السهل. إنشاء مكتبة النصي، والذي يطلق عليه نظام التشغيل Windows الحافظة. انتقل الى منطقة (الإعلانات) من مكتبة النصي، ووضع في هذا تعريف الفئة.
أولا، تحتاج إلى الإعلان عن الطبقات API التي سوف تحتاج:
أعلن وظيفة خاصة GetClipboardData ليب "USER32" (الأساسية ByVal wFormat طالما) طالما
أعلن وظيفة خاصة SetClipboardData ليب "USER32" (الأساسية ByVal wFormat كما hData، طويل الأساسية ByVal طالما) طالما
أعلن خاصة ليب OpenClipboard وظيفة "USER32" الاسم المستعار "OpenClipboard" (HWND الأساسية ByVal طالما) طالما
أعلن خاصة ليب CloseClipboard وظيفة "USER32" الاسم المستعار "CloseClipboard" () طالما
أعلن وظيفة خاصة GlobalLock ليب "kernel32" الاسم المستعار "GlobalLock" (الأساسية ByVal hMem طالما) طالما
أعلن وظيفة خاصة GlobalUnlock ليب "kernel32" الاسم المستعار "GlobalUnlock" (الأساسية ByVal hMem طالما) طالما
أعلن خاصة ليب GlobalAlloc وظيفة "kernel32" (wFlags الأساسية ByVal كما dwBytes، طويل الأساسية ByVal طالما) طالما
أعلن وظيفة خاصة GlobalFree ليب "kernel32" (الأساسية ByVal hMem طالما) طالما
أعلن خاصة ليب EmptyClipboard وظيفة "USER32" () طالما
أعلن وظيفة خاصة lstrcpyLP2Str ليب "kernel32" الاسم المستعار "lstrcpyA" (lpString1 الأساسية ByVal كسلسلة، _
الأساسية ByVal lpString2 طالما) طالما
أعلن وظيفة خاصة lstrlenLP ليب "kernel32" الاسم المستعار "lstrlenA" (lpString الأساسية ByVal طالما) طالما
أعلن خاصة الفرعية MoveMemory ليب "kernel32" الاسم المستعار "RtlMoveMemory" (strDest الأساسية ByVal مثل أي، _
الأساسية ByVal lpSource مثل أي، طول الأساسية ByVal مثل أي)
أعلن وظيفة خاصة GetFocus ليب "USER32" الاسم المستعار "GetFocus" () طالما
وسوف تحتاج أيضا soem ثابت محدد، إضافة حتى تلك القادمة:
خاصة CF_TEXT مقاولات = 1
مقاولات خاصة GMEM_MOVABLE = & H2 &
مقاولات خاصة GMEM_DDESHARE = & H2000 &
وأخيرا، إضافة في تعريف الفئة. أولا، دعنا نذهب على الممتلكات التي من شأنها أن قراءة من الحافظة
فئة WindowsClipboard
احصل على الممتلكات العامة المحتويات كسلسلة
خافت hClipboard طالما
خافت LpStrl طالما
خافت Resultl طالما
خافت Clipboardstr كسلسلة
إذا كان (OpenClipboard (0 &) <> 0) ثم
hClipboard = GetClipboardData (CF_TEXT)
إذا كان (hClipboard <> 0) ثم
LpStrl = GlobalLock (hClipboard)
Clipboardstr = الفضاء $ (lstrlenLP (LpStrl))
Resultl = lstrcpyLP2Str (Clipboardstr، LpStrl)
GlobalUnlock (hClipboard)
آخر
Clipboardstr = "NULL"
نهاية إذا
CloseClipboard الدعوة ()
آخر
Clipboardstr = ""
نهاية إذا
محتويات = Clipboardstr
انهاء الملكية "ينهي" الحصول على "طريقة لخاصية" المحتويات "
أول شيء يفعله هو الطبقة الحصول على مقبض إلى الحافظة. ثم تم تأمين الحافظة. تتكون منطقة مؤقتة فارغة من البيانات بحيث أن هناك كتلة كبيرة بما يكفي من البيانات لاجراء سلسلة من النتائج. يتم وضع البيانات الحافظة إلى أن مساحة فارغة وغير مؤمن الحافظة للافراج عنه مرة أخرى. يتم إرجاع النتائج للمستخدم.
لتحديد محتويات الحافظة، وهذا يستخدم الخاصية المحتويات نفسه، ولكن هذه المرة تم تعيين الخاصية بدلا من الحصول على.
جمهور المحتويات مجموعة الخاصية كسلسلة
خافت lSize طالما
خافت hMem طالما
خافت pMemory طالما
خافت مؤقت ومتغير
lSize = ليون (المحتويات) +1
hMem = GlobalAlloc (GMEM_MOVABLE أو GMEM_DDESHARE، lSize)
إذا hMem = 0 أو Isnull (hMem) ثم الخروج الملكية
pMemory = GlobalLock (hMem)
إذا pMemory = 0 أو Isnull (pMemory) ثم
GlobalFree (hMem)
خروج الملكية
نهاية إذا
استدعاء MoveMemory (pMemory، المحتويات، lSize)
دعوة GlobalUnlock (hMem)
إذا كان (OpenClipboard (0 &) <> 0) ثم
إذا كان (EmptyClipboard () <> 0) ثم
TEMP = SetClipboardData (CF_TEXT، hMem)
نهاية إذا
TEMP = CloseClipboard ()
نهاية إذا
GlobalFree (hMem)
انهاء الملكية "ينهي" تعيين "طريقة لخاصية" المحتويات "
نهاية الدرجة
أولا، ومعرفة مقدار الذاكرة يحتاج إلى تخصيص. سوف يكون هذا أحد أكثر شخصية من حجم البيانات التي يتم إرسالها. ثم تخصيص ذاكرة كافية لاستيعاب هذا النص، ووضع النص في موقع الذاكرة المخصصة. (وهذا ينطوي على تأمين الذاكرة، والانتقال بعد ذلك النص في ذاكرة مقفلة، ثم فتح الذاكرة). ثم نحصل على مؤشر إلى الحافظة، تماما مثل خاصية "الحصول على" فعل. مرة واحدة لدينا أن مقبض، ونحن تمحو كل ما هو في الحافظة. يمكن أن يكون هذا النص، أو الرسومات، أو أي شيء آخر. بعد تم مسح الحافظة، ثم يتم وضع البيانات في الذاكرة في الحافظة. ثم يتم تنظيف الامور - تم إغلاق الحافظة ويتم تحرير الذاكرة.
لاستخدام هذه الفئة، فإنه من السهل جدا. الأول، وبناء وكيل. تأكد من تضمين مكتبة السيناريو مع "حافظة Windows" استخدام بيان في المنطقة (خيارات). ثم رمز الاختبار هو مجرد بضعة أسطر:
س قاتمة كما WindowsClipboard
مجموعة س = WindowsClipboard جديد ()
x.Contents Msgbox
x.Contents = "تحقق من إعداد البيانات عن طريق وضع الحافظة في بعض النص"
x.Contents Msgbox
هذا وسوف أعطيك رسالة مربعات 2-1 مع محتويات الحافظة من قبل تشغيلك وكيل، والآخر مع محتويات الحافظة التي وضعناها خلال تسيير الوكيل.
شوهدت 11817 مرة من قبل المشاهدين 3017













