فب/فبا:جلب سلسلة HTML من الحافظة (تم نسخها عبر متصفح الويب)

StackOverflow https://stackoverflow.com/questions/639890

سؤال

يبدو أنه عند نسخ شيء ما من متصفح الويب إلى الحافظة، يتم تخزين شيئين على الأقل:

  1. نص عادي
  2. كود مصدر HTML

ثم يعود الأمر إلى البرنامج الذي تلصق فيه ليتمكن من تحديد البرنامج الذي يريده.عند اللصق في مايكروسوفت إكسل 2003, ، لديك خيار لصق خاص للصق HTML، والذي سيقوم بلصق HTML المنسق (كما يتم عرضه بواسطة المتصفح).

ما أريد القيام به هو لصق كود المصدر الفعلي كنص عادي.هل يمكن جلب هذا من الحافظة في VBA؟

يحرر أحاول الوصول إلى كافة التعليمات البرمجية المصدر لـ HTML المنسوخ، بما في ذلك العلامات.

هل كانت مفيدة؟

المحلول

هذه المرة قرأت السؤال بشكل صحيح وأدركت com.coonj يريد الحصول على HTML من الحافظة بما في ذلك العلامات.

وأعتقد أن هذا أمر صعب إلى حد معقول.تحتاج إلى قراءة الحافظة باستخدام مكالمات Windows API.وبعد ذلك، قم بتحليل سلسلة CF_HTML الناتجة والتي تحتوي على بعض الرؤوس الغريبة المضافة أعلى HTML.

  1. مقالة قاعدة معارف Microsoft باستخدام رمز Windows API لقراءة CF_HTML من الحافظة (وظيفة GetHTMLClipboard).
  2. قد ترغب بعد ذلك على الأرجح في تجاهل الرؤوس الغريبة.تقوم Microsoft بتوثيق التنسيق هنا.يظهر أدناه مثال لجزء CF_HTML.ربما يمكنك التوصل إلى بعض طرق التخمين لتخطي الأسطر القليلة الأولى.

    Version:0.9 
    StartHTML:71 
    EndHTML:170 
    StartFragment:140 
    EndFragment:160 
    StartSelection:140 
    EndSelection:160 
    <!DOCTYPE> 
    <HTML> 
    <HEAD> 
    <TITLE>The HTML Clipboard</TITLE> 
    <BASE HREF="http://sample/specs">  
    </HEAD> 
    <BODY> 
    <!--StartFragment -->     <P>The Fragment</P> 
    <!--EndFragment --> 
    </BODY> 
    </HTML>  
    

قد يكون من المفيد أيضًا التفكير فيما إذا كانت هناك أي طريقة أخرى لحل مشكلتك.على سبيل المثال، هل سيكون المتصفح دائمًا هو Internet Explorer؟هل يمكنك الحصول على ما تحتاجه من خلال السير في شجرة HTML باستخدام نموذج كائن COM؟

يحرر: com.coonj لقد جرب ذلك الآن ويقول "يبدو أن وظيفة GetHTMLClipboard تعمل مع كل من Firefox وIE، ولا يبدو أنها تقوم برمي تلك الرؤوس هناك"

نصائح أخرى

VB6 وقد الحافظة الكائن الذي يسمح لك للحصول على الحافظة البيانات في تنسيقات مختلفة.VBA لا يكون هذا الكائن.ولكن هناك windows API المكالمات يمكنك استخدام.يمكنك أن ترى عينة تنفيذ VBA هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top