דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. שאלות ב- Cef sharp

שאלות ב- Cef sharp

מתוזמן נעוץ נעול הועבר תכנות
21 פוסטים 2 כותבים 1.3k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מנצפךמ מנותק
    מנצפךמ מנותק
    מנצפך
    כתב ב נערך לאחרונה על ידי
    #1

    אני מנסה ליצור אפליקציה קטנה עם cef sharp (דפדפן כרום) בwinForm.
    באתר שאני מציג יש קישור שפותח כרטיסיה חדשה. איך אפשר למנוע מהמשתמש לפתוח כרטיסיה חדשה. ובמקום זה אני אולי אצור לו page חדש ב tabControl.

    שאלה נוספת: אני רוצה למנוע ממנו לעבור לאתר אחר (שיש קישור שלו באתר שאני מציג). איך לעשות זאת?
    תודה.

    תגובה 1 תגובה אחרונה
    0
    • מנצפךמ מנותק
      מנצפךמ מנותק
      מנצפך
      כתב ב נערך לאחרונה על ידי
      #2

      טוב. זה משהו שקשור למאפיין "RequestHandler" של ה chromeControl.

      תגובה 1 תגובה אחרונה
      1
      • מנצפךמ מנותק
        מנצפךמ מנותק
        מנצפך
        כתב ב נערך לאחרונה על ידי
        #3

        השאלה השניה קשורה ל RequestHandler
        הראשונה ל LifeSpanHandler
        נשתף אתכם בהמשך...

        מנצפךמ תגובה 1 תגובה אחרונה
        1
        • מנצפךמ מנותק
          מנצפךמ מנותק
          מנצפך
          השיב למנצפך ב נערך לאחרונה על ידי
          #4

          @dovid וכל השאר, אני צריך פה את עזרתם.
          עשיתי פרוייקט קטן ב Winform של דפדפן.
          השתמשתי ב CefSharp. הכל טוב ויפה.
          אבל איפה שיש לינק שפותח חלון חדש (קישור עם "blank" ב target) אני רוצה ללכוד את האירוע הזה ובמקום שייפתח חלון חדש, להוסיף כרטיסייה ושם לפתוח את החלון. כמו בדפדפן "אמיתי".
          ב WinForm זה עובד מעולה.
          ל ChromiumWebBrowser יש פרופרטי שנקרא LifeSpanHandler.
          שם אני יכול להיצמד לאירוע שנקרא : "OnBeforePopup".
          הבעיה היא שה ChromiumWebBrowser רץ כנראה בתהליך נפרד, לכן הייתי צריך להשתמש ב Invoke. והכל עובד יופי.
          הבעיה היא ב WPF. ניסיתי לעשות שם את אותו המהלך וזה נופל בלי להשאיר שגיאה.... אני לא מבין בWPF, וגם לא רוצה להיכנס לזה (לפחות לא בזמן הקרוב) אבל נראה שהלוגיקה אמורה להיות בערך כמו ה WinForm.
          אנא עזרתכם!

          תגובה 1 תגובה אחרונה
          0
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            כתב ב נערך לאחרונה על ידי dovid
            #5

            תצרף קוד (מלבד ההסברים שאכן עזרו לי).
            של WPF.
            ואגב, ממש ממש חבל שאתה לא נכנס לWPF, והמילה "נכנס" כבדה מידי, פשוט תתחיל להיות שמה וזהו.

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            1
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              כתב ב נערך לאחרונה על ידי
              #6

              הבנתי את הבעיה שלך.
              המקביל של Post של WinForms בWPF זה Dispatcher.Invoke.
              כיון שהבנתי רק אחרי שעשיתי דמו אז אני מצרף את הקוד:

              public partial class MainWindow : Window
              {
                  MyLifeSpanHandler myHandler;
              
                  public MainWindow()
                  {
                      myHandler = new MyLifeSpanHandler();
                      myHandler.OpenNewPage += (s) => Dispatcher.Invoke(() => OpenNewTab(s));
              
                      InitializeComponent();
                      OpenNewTab("http://netfree.link/common-sites");
                  }
              
                  void OpenNewTab(string address)
                  {
                      var tabItem = new TabItem();
              
                      var browser = new ChromiumWebBrowser();
                      browser.LifeSpanHandler = myHandler;
                      browser.Address = address;
                      browser.TitleChanged += (s, e) => tabItem.Header = e.NewValue;
                      tabItem.Content = browser;
                      tabControl1.Items.Add(tabItem);
                  }
              
              }
              
              public class MyLifeSpanHandler : ILifeSpanHandler
              {
                  public event Action<string> OpenNewPage;
              
                  public bool DoClose(IWebBrowser browserControl, IBrowser browser) => true;
                  public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser){}
                  public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser){}
              
                  public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
                  {
                      newBrowser = new ChromiumWebBrowser();
                      OpenNewPage?.Invoke(targetUrl);
                      return true;
                  }
              }
              

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              תגובה 1 תגובה אחרונה
              2
              • מנצפךמ מנותק
                מנצפךמ מנותק
                מנצפך
                כתב ב נערך לאחרונה על ידי
                #7

                תודה. עוד מעט אבדוק.
                ניסיתי בתחילה Dispatcher.Invoke ולא עזר.
                (
                @dovid אני לא רוצה WPF כי זה מסובך טילים (?) בשבילי.
                אני יודע את העיקרון של XAML. אבל מפה זה רק מתחיל. אני גם חושב מה זה כבר ייתן לי. רק פיתוח בסביבת windows.
                בעיקרון די נמאס לי מ C#, אני מעדיף להשקיע את המאמצים בפיתוח WEB. כולל electron שייתן לי פתרון לdesktop.
                עכשיו אני די רק בתחזוקה של פרוייקטים קיימים בC# winForm.
                )

                תגובה 1 תגובה אחרונה
                0
                • מנצפךמ מנותק
                  מנצפךמ מנותק
                  מנצפך
                  כתב ב נערך לאחרונה על ידי
                  #8

                  זה עובד מעולה. קוד נקי ואלגנטי.
                  @dovid אשאל אותך אחת ולתמיד, הכל מלימוד עצמי?

                  dovidD תגובה 1 תגובה אחרונה
                  2
                  • dovidD מנותק
                    dovidD מנותק
                    dovid ניהול
                    השיב למנצפך ב נערך לאחרונה על ידי
                    #9

                    @מנצפך אמר בשאלות ב- Cef sharp:

                    זה עובד מעולה. קוד נקי ואלגנטי.
                    @dovid אשאל אותך אחת ולתמיד, הכל מלימוד עצמי?

                    תודה! כלום לא עצמי, רק מאחרים.
                    אתרים, ספרים, ושפשוף אוהו. הרבה.
                    ואני יודע רק רק את זה - לכתוב קוד. לא מבין ברוב הנושאים מסביב.

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    תגובה 1 תגובה אחרונה
                    2
                    • מנצפךמ מנותק
                      מנצפךמ מנותק
                      מנצפך
                      כתב ב נערך לאחרונה על ידי מנצפך
                      #10

                      @dovid יפה מאוד.
                      יכול להיות שהבעיה שלי היא חוסר סבלנות. אני צריך לראות תוצאות מיד ובמקום. צודק?

                      תגובה 1 תגובה אחרונה
                      2
                      • מנצפךמ מנותק
                        מנצפךמ מנותק
                        מנצפך
                        כתב ב נערך לאחרונה על ידי
                        #11

                        גם זה שצריך לכתוב כ"כ הרבה בשביל חתיכת פונקציה קטנה... זה מייאש ומעצבן.

                        תגובה 1 תגובה אחרונה
                        1
                        • dovidD מנותק
                          dovidD מנותק
                          dovid ניהול
                          כתב ב נערך לאחרונה על ידי
                          #12

                          תראה זה לא פונקציה כ"כ קטנה, אתה בהינף יד רוצה לממש ממשק טאבים, ולהאזין לאירוע פנימי של כרומיום, זה לא מובן מאליו.
                          תוצאות מייד, אני פחות או יותר באותו רעיון...
                          ממה שאני רואה אתה בסדר גמור.

                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

                          מנצפךמ תגובה 1 תגובה אחרונה
                          2
                          • מנצפךמ מנותק
                            מנצפךמ מנותק
                            מנצפך
                            כתב ב נערך לאחרונה על ידי מנצפך
                            #13

                            @dovid יש לי תוכנה שחייבת להיות Desktop עם המון אינטגרציה ל Desktop.
                            עכשיו בWinForm. יש לי חלום להעביר אותה ל WEB ולהשתמש ב Chromium בשביל לתקשר עם ה Dekstop.
                            זה צריך להיות סופר יציב. מעניין יהיה לבדוק עכשיו את גבולות ה- CefSharp.

                            תגובה 1 תגובה אחרונה
                            1
                            • מנצפךמ מנותק
                              מנצפךמ מנותק
                              מנצפך
                              השיב לdovid ב נערך לאחרונה על ידי
                              #14

                              @dovid אמר בשאלות ב- Cef sharp:

                              תראה זה לא פונקציה כ"כ קטנה, אתה בהינף יד רוצה לממש ממשק טאבים, ולהאזין לאירוע פנימי של כרומיום, זה לא מובן מאליו.
                              תוצאות מייד, אני פחות או יותר באותו רעיון...
                              ממה שאני רואה אתה בסדר גמור.

                              אתה כנראה לא יודע כמה זמן אני בתחום שזה נראה לך משהו גדול.

                              תגובה 1 תגובה אחרונה
                              0
                              • מנצפךמ מנותק
                                מנצפךמ מנותק
                                מנצפך
                                כתב ב נערך לאחרונה על ידי
                                #15

                                כוונתי לומר שכמה שאני מכיר את התחום זה עדיין נראה רחוק ממני.

                                תגובה 1 תגובה אחרונה
                                0
                                • dovidD מנותק
                                  dovidD מנותק
                                  dovid ניהול
                                  כתב ב נערך לאחרונה על ידי
                                  #16

                                  חוששני שאני ותיק ממך. והיה לוקח לי עוד הרבה מחקר אם לא שגילית בראשי פרקים את רוב העסק.

                                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                  תגובה 1 תגובה אחרונה
                                  1
                                  • מנצפךמ מנותק
                                    מנצפךמ מנותק
                                    מנצפך
                                    כתב ב נערך לאחרונה על ידי
                                    #17

                                    @dovid אתה יכול לבדוק אם אתה יכול להדפיס מסמך PDF דרך ה cefSharp? (כלומר לפתוח את הprint dialog). אני לפעמים מצליח. ולפעמים לא. (בתחילה זה היה קשור ל OnBeforePopup. שאם הייתי מחזיר ישר false זה כן היה פותח את ה print dialog).

                                    תגובה 1 תגובה אחרונה
                                    0
                                    • dovidD מנותק
                                      dovidD מנותק
                                      dovid ניהול
                                      כתב ב נערך לאחרונה על ידי
                                      #18

                                      בדקתי, עובד אצלי.

                                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                      מנצפךמ תגובה 1 תגובה אחרונה
                                      1
                                      • מנצפךמ מנותק
                                        מנצפךמ מנותק
                                        מנצפך
                                        השיב לdovid ב נערך לאחרונה על ידי
                                        #19

                                        @dovid אמר בשאלות ב- Cef sharp:

                                        בדקתי, עובד אצלי.

                                        באיזה גירסת cef sharp? (אני ניסיתי בגירסה 3 משהו).
                                        גם עם העניין של הכרטיסיות?

                                        תגובה 1 תגובה אחרונה
                                        0
                                        • dovidD מנותק
                                          dovidD מנותק
                                          dovid ניהול
                                          כתב ב נערך לאחרונה על ידי
                                          #20

                                          הCefSharp.Wpf גירסה 63.0.1
                                          הcef.redist.x86 גירסה 3.3239.1723

                                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                          תגובה 1 תגובה אחרונה
                                          0

                                          • 1
                                          • 2
                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום