2017-01-28 16 views
9

Tôi đang cố gắng để mô phỏng click chuột trên iphone simulator từ macos App cho rằng tôi đang sử dụng CGEvents.Làm thế nào để mô phỏng click chuột từ Mac App để ứng dụng khác

quá trình id là 33.554 cho iPhone giả

let point = CGPoint(x: 500 , y:300) 
let eventMouseDown = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, mouseCursorPosition: point, mouseButton: .left) 
let eventMouseUp = CGEvent(mouseEventSource: nil, mouseType: .leftMouseUp, mouseCursorPosition: point, mouseButton: .left) 
eventMouseDown?.postToPid(33554) 
eventMouseUp?.postToPid(33554) 

Tôi cũng đã nhận thấy rằng Nó mô phỏng click chuột khi cửa sổ ios giả là tập trung và chỉ hoạt động cho thanh công cụ này, nhưng không phải cho các mô phỏng ví dụ nếu tôi thay đổi CGPoint đến (0,30) nó sẽ click vào tùy chọn Simulator

enter image description here

nhưng khi tôi đưa ra CGPoints bấm ứng dụng bên trong iOS Simulator nó không làm việc enter image description here

Tuy nhiên, tôi có thể gửi Keyboard tổ chức sự kiện để mô phỏng sử dụng

let keyboardDown = CGEvent(keyboardEventSource: nil, virtualKey: 6, keyDown: true) 
let keyboardUp = CGEvent(keyboardEventSource: nil, virtualKey: 6, keyDown: false) 
keyboardDown?.postToPid(33554) 
keyboardUp?.postToPid(33554) 
+1

Bạn có nhớ rằng trục y được đảo ngược trên macOS không? – Alistra

Trả lời

1

Bạn nói rằng bạn có thể gửi các sự kiện bàn phím, vì vậy nó không có khả năng là một vấn đề cho phép, nhưng bạn có thể thử thực hiện của bạn là chương trình gốc để loại trừ.

tọa độ sự kiện đơn giản có thể khác với những gì bạn mong đợi (lộn ngược?). Thử thiết lập nội dung nào đó trong ứng dụng được mô phỏng để báo cáo trên tất cả đã nhận sự kiện ở cấp ứng dụng.

Hơn nữa, là các tọa độ trong hệ tọa độ màn hình? Có lẽ sự kiện được nhận bởi trình mô phỏng và bị loại bỏ vì không có cửa sổ "bên dưới" nó để phân phối nó. Thử di chuyển cửa sổ trình mô phỏng đến từng góc của màn hình và sử dụng thứ gì đó như (10,10) cho một tọa độ.

Bạn cũng có thể thử NSEvent và phương thức CGEvent để nhận cgevent cơ bản có thể được khởi chạy chính xác cho nhu cầu của bạn. Nếu điều đó hoạt động thì sẽ dễ dàng hơn để tìm ra những gì bạn đang bỏ lỡ.

Cuối cùng, hãy thử không qua nil cho số mouseEventSource. Một cái gì đó như CGEventSourceRef eventSource = CGEventSourceCreate(kCGEventSourceStateHIDSystemState); có thể?

nỗ lực mương cuối tại giúp đỡ:

Tôi có một (cũ) ứng dụng mac rằng công văn kiện chuột sản xuất để các chương trình khác; có lẽ source code của nó có thể tiết lộ điều gì đó hữu ích.

Bây giờ ... nếu không có cách nào hiệu quả, bạn có thể cho chúng tôi biết chính xác bạn đang cố gắng thực hiện điều gì. Có thể có một cách tốt hơn nhiều.

0

bài viết ở đây vì câu hỏi này là hầu hết các hàng đầu trong Google về sự kiện gửi nhấp chuột trong OS X.

Bạn có thể có một cái nhìn vào examples làm việc của ma túy-n-thả và thực hiện một chức năng nhấp chuột.

Chỉ một ghi chú, cửa sổ bạn sẽ nhấp phải được hiển thị.

0

Bạn đang ở rất gần (Swift 4):

let mousePosition: CGPoint = .zero // your position here 
let mouseEvent = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, 
mouseCursorPosition: mousePosition, mouseButton: .left) 
mouseEvent?.postToPid(33554) 

Một chi tiết quan trọng mà không nhận ra lúc đầu được rằng ứng dụng sandboxing phải tắt cho API này để làm việc.

Các vấn đề liên quan