2017-02-04 69 views
0

我有一個外部窗口,我正在發送一個鼠標單擊並拖動到。由於某種原因,它不會拖動它。任何幫助深表感謝。鼠標單擊並拖動不起作用

 public void clickAndDrag(Point pointA, Point pointB) 
    { 
     Point tmp = Cursor.Position; 

     mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0); 
     Cursor.Position = ConvertToScreenPixel(pointA); 
     System.Threading.Thread.Sleep(1000); 
     mouse_event((int)(MouseEventFlags.LEFTDOWN), 0, 0, 0, 0); 
     Cursor.Position = ConvertToScreenPixel(pointB); 
     System.Threading.Thread.Sleep(1000); 
     mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0); 


     Cursor.Position = tmp; 
    } 
+0

您的意思是一個不屬於您的程序的外部窗口?你想改變它的位置? – Everyone

+0

外部窗口不屬於我,我無法訪問其代碼。我不想改變窗口位置,因爲我已經可以使用不同的方法來改變窗口位置。我想點擊一個座標,按住點擊直到我到達第二個座標並釋放點擊。 – jshill103

+0

恐怕這是不可能的。你想要做的就是發送一條消息,如果它不能接受你的消息並給你返回結果,那就沒有辦法解決它。您需要該窗口的代碼來使其接受您的方法並採取相應的行動。 – Everyone

回答

-1

我想通了。我想你需要慢慢移動鼠標。但是,這有點點擊並向左拖動。這是完全垃圾,但我太累了,無法重構它。

 public void clickAndDrag(Point pointA) 
    { 
     Point tmp = Cursor.Position; 
     pointA.X = pointA.X + 20; 
     pointA.Y = pointA.Y + 20; 

     mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0); 
     Cursor.Position = ConvertToScreenPixel(pointA); 
     System.Threading.Thread.Sleep(1000); 
     mouse_event((int)(MouseEventFlags.LEFTDOWN), 0, 0, 0, 0); 

     for (var i = 0; i < 10; i++) 
     { 
      pointA.X = pointA.X - 10; 
      Cursor.Position = ConvertToScreenPixel(pointA); 
      System.Threading.Thread.Sleep(200); 
      mouse_event((int)(MouseEventFlags.MOVE), 0, 0, 0, 0); 
     } 


     mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0); 


     Cursor.Position = tmp; 
    }