Internet Explorer AddIn using SHDocVw and mshtml

30 במרץ 2011


 



כיצד אפשר לייצר AddIn שמוסיף קטעי html לכל הדפדפנים (IE) הפתוחים


 

(תודה לתומר קיסר על העזרה)

 

ראשית נוסיף את Microsoft.mshtml (זהו dll המאפשר שליטה על תוכן html – דוגמה לשימוש תוכלו לראות בפוסט Working with Microsoft.mshtml in c#)

 

לאחר מכן נוסיף את SHDocVw זה אמור להיות ב – C:\Windows\System32 (זהו dll המאפשר גישה לכל הדפדפנים הפתוחים)

 

 

כעת נרצה לקבל את כל החלונות הפתוחים, נריץ את הקוד הבא:

 



private static List<IWebBrowser2> GetIEWindows()


{


    List<IWebBrowser2> list = new List<IWebBrowser2>();


 


    ShellWindows windows = new ShellWindows();


 


    foreach (IWebBrowser2 item in windows)


    {


        if (item.Document is HTMLDocument)


        {


            list.Add(item);


        }


    }


 


    return list;


}


 

IWebBrowser2 מגיע מ – SHDocVw והוא מכיל את כל המידע על החלון הפתוח.

 

ShellWindows הוא האובייקט המכיל את כל החלונות.

 

ונבדוק האם האובייקט הוא מסוג HTMLDocument (שמגיע מ – mshtml) כי זה יכול להיות גם תיקיות פתוחות (explorer – לא הדפדפן אלא תיקייה במערכת ההפעלה)

 

 

 

כעת נרצה להוסיף בתחתית כל הדפדפנים הפתוחים את השם שלי, נריץ את הקוד הבא:

 



static void Main(string[] args)


{


    List<IWebBrowser2> ie = GetIEWindows();


    foreach (var item in ie)


    {


        string html = "<hr/><b>Shlomo Goldberg</b><hr/>";


        ((HTMLDocument)item.Document).body.insertAdjacentHTML("beforeEnd", html);


    }


}


 

כמובן שאפשר לשנות כל דבר ב – html, כרגע בחרתי להשתמש בפונקציה insertAbjacentHTML להוסיף בתחתית העמוד את ה – html,

 

וכך נראים הדפדפנים שלי אחרי ההרצה של הקוד.

 

 

SHDocVW mshtml

 

 

 

זה הבסיס וההתחלה ליצירת AddIn, מכאן אפשר לקחת את זה קדימה להרבה כיונים, לדוגמא:

ניתן לכתוב Window Service שירוץ ברקע ויעדכן כל הזמן את החלונות החדשים שתפתחו,

או שאפשר לכתוב לחצן ולהוסיף אותו ל – tool bar ובלחיצה עליו להפעיל קוד שיעשה משהו (כמו להסתיר את כל אובייקטי ה – flash באתר).

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

2 תגובות

  1. Sasha Goldshtein30 במרץ 2011 ב 13:37

    נראה לי שמתבקשת השאלה – מה הצורך המעשי שבשבילו צריך את הדבר הזה?

    הגב
  2. Shlomo30 במרץ 2011 ב 13:56

    כמו שכתבתי בסוף הפוסט, היכולת שלנו לכתוב addin ל – IE בקלות בצורה של הזרקת HTML לכל הדפדפנים הפתוחים.

    הגב