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

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

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

תפיסה של ארוע הדבקה בוינדוס

מתוזמן נעוץ נעול הועבר ארכיון code613m
7 פוסטים 4 כותבים 784 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • נתנאלנ
    נתנאלנ
    נתנאל
    כתב ב נערך לאחרונה על ידי
    #1

    אני רוצה לתפוס כל פעם שהמתשמש מדביק על ידי המקשים (אופן אחר גם על ידי העכבר יתקבל בברכה).
    יש לי את הקוד הבא:

    KeysConverter k = new KeysConverter();
              
                int counter = 0;
                while (torun)
                {
                    Thread.Sleep(10);
                    for (Int32 i = 0; i < 225; i++)
                    {
                        int key = GetAsyncKeyState(i);
                      
    
                        if (key == 1 || key == -32767)
                        {
                            var t = k.ConvertToString(i);
                            if (t =="ControlKey")
                            {
                                counter=1;
                            }
                            if (t == "V" && counter == 1)
                            {
                               //paste event
                                MessageBox.Show(t);
                            }
    

    יש עצות יותר טובות מזה?

    פורסם במקור בפורום CODE613 ב23/07/2017 17:57 (+03:00)

    הצטרפות לרשימת התפוצה בעניני תכנות JS , React , Node וכל מיני דברים מענינים כאן :cool:
    https://programing-tips.web.app/

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

      https://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook
      https://stackoverflow.com/questions/604410/global-keyboard-capture-in-c-sharp-application

      פורסם במקור בפורום CODE613 ב23/07/2017 20:00 (+03:00)

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

        הכונה ברחבי המערכת או רק בתוכנית שלך?
        ואם זה בתכונית שלך בלבד איה סוג היא, WPF? WinForms?

        פורסם במקור בפורום CODE613 ב23/07/2017 21:04 (+03:00)

        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
        תגובה 1 תגובה אחרונה
        0
        • נתנאלנ
          נתנאלנ
          נתנאל
          כתב ב נערך לאחרונה על ידי
          #4

          בכל רחבי המערכת, וזה WinForms.
          מה שהובא לעיל עוזר רק לkey אחד, וא"כ אני אצטרך לחשב בעצמי את הצירוף של שניהם על ידי counter. תקנו אותי אם אני טועה.
          ומה שהובא שם מסטאק - אני פשוט לא מבין שם מילה אחת...:(

          פורסם במקור בפורום CODE613 ב23/07/2017 21:59 (+03:00)

          הצטרפות לרשימת התפוצה בעניני תכנות JS , React , Node וכל מיני דברים מענינים כאן :cool:
          https://programing-tips.web.app/

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

            זה די מסובך. מה שרחמים הביא זה ללכוד את לחיצת המקשים של Ctrl+V, למעשה אתה רוצה את אירוע ההדבקה שיכול להיזרק גם ע"י כפתור או ע"י לחיצת עכבר ותפריט הקשר.
            אז זה מאוד מסובך. קוראים לזה hook ותוכל לחפש ע"ז בגוגל C# clipboard global event.

            פורסם במקור בפורום CODE613 ב23/07/2017 23:46 (+03:00)

            • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
            • בכל נושא אפשר ליצור קשר dovid@tchumim.com
            תגובה 1 תגובה אחרונה
            1
            • S
              S
              softs
              כתב ב נערך לאחרונה על ידי
              #6

              מזכיר לי נשכחות... הייתי פעם אלוף בשטויות האלה.
              רק אומר שזה לא מורכב בכלל והנה דוגמה : (winform - יש להוסיף פקדי picturebox, textbox ו button)

              public partial class frmMain : Form
                  {
                      [DllImport("User32.dll", CharSet = CharSet.Auto)]
                      public static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer);
              
                      [DllImport("User32.dll", CharSet = CharSet.Auto)]
                      public static extern bool ChangeClipboardChain(IntPtr hWndRemove, IntPtr hWndNewNext);
              
                      [DllImport("user32.dll")]
                      static extern short GetAsyncKeyState(Keys vKey);
              
                      private const int WM_DRAWCLIPBOARD = 0x0308;
              
                      private IntPtr m_NextClipbrdViewer;
              
                      public frmMain()
                      {
                          InitializeComponent();
                      }
              
                      bool bAction = false;
                      private void btnAction_Click(object sender, EventArgs e)
                      {
                          if (bAction)
                          { //Stop Hook
                              ChangeClipboardChain(Handle, m_NextClipbrdViewer);
                              btnAction.Text = "Start";
                          }
                          else
                          { //Start Hook (Hook means call WndProc when keyboard is changed)
                              m_NextClipbrdViewer = SetClipboardViewer(Handle);
                              btnAction.Text = "Stop";
                          }
                          //Change Flag
                          bAction = !bAction;
                      }
                      
                      protected override void WndProc(ref Message m)
                      {
                          base.WndProc(ref m);
                          // Only clipboard events
                          if (m.Msg != WM_DRAWCLIPBOARD) return;
              
                          if(GetAsyncKeyState(Keys.Snapshot) != 0)
                          {
                              textBox1.Text = "Is Snapshot";
                          }
              
                          if(Clipboard.ContainsImage())
                          {
                              pictureBox1.Image = Clipboard.GetImage();
                          }
              
                          if (Clipboard.ContainsText())
                          {
                              textBox1.Text =  Clipboard.GetText();
                          }
                          if (Clipboard.ContainsFileDropList())
                          {
                              textBox1.Text = string.Join("\r\n", Clipboard.GetFileDropList().Cast<string>());
                          }     
                      }
                  }
              

              פורסם במקור בפורום CODE613 ב24/07/2017 01:48 (+03:00)

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

                @softs

                מזכיר לי נשכחות... הייתי פעם אלוף בשטויות האלה.
                רק אומר שזה לא מורכב בכלל והנה דוגמה : (winform - יש להוסיף פקדי picturebox, textbox ו button)
                ....

                תודה רבה,
                עזרת לי מאוד!

                פורסם במקור בפורום CODE613 ב25/08/2017 11:45 (+03:00)

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

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

                נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

                בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                הרשמה התחברות
                תגובה
                • תגובה כנושא
                התחברו כדי לפרסם תגובה
                • מהישן לחדש
                • מהחדש לישן
                • הכי הרבה הצבעות


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

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

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