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

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

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

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

מתוזמן נעוץ נעול הועבר ארכיון code613m
7 פוסטים 4 כותבים 627 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • נתנאלנ מנותק
    נתנאלנ מנותק
    נתנאל
    כתב ב נערך לאחרונה על ידי
    #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

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

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

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