2010-08-05 20 views
8

में एक भौतिक माउस चाल को अनुकरण करें मै मैक ओएस एक्स 10.6 में माउस मूव इवेंट अनुकरण करने का एक तरीका ढूंढ रहा हूं। इसे माउस इकाइयों में परिभाषित किया जाना चाहिए (पिक्सल की बजाय - यह महत्वपूर्ण है!)मैक ओएस एक्स

मुझे इस प्रयोग की आवश्यकता है जिसमें मूल रूप से ड्राइंग लाइनें हों।

किसी भी विचार का स्वागत है।

धन्यवाद!

उत्तर

7

मैक ओएस एक्स और अन्य ऑपरेटिंग सिस्टम में माउस को स्थानांतरित करने का सबसे आसान तरीका Java Robot का उपयोग करना है। यह अन्य घटनाओं का अनुकरण भी कर सकता है। उदाहरण के लिए, माउस नीचे या यहां तक ​​कि एक कुंजी दबाएं। हालांकि, यह सूचक को दिए गए स्क्रीन निर्देशांक में ले जाता है। तो केवल एक चीज जो आपको करने की ज़रूरत है वह है कि अपनी भौतिक इकाइयों को उचित निर्देशांक में परिवर्तित करना है।

import java.awt.AWTException; 
import java.awt.Robot; 

public final class JavaRobotExample 
{ 
    public static void main(String[] args) throws AWTException 
    { 
    Robot robot = new Robot(); 

    robot.setAutoDelay(5); 
    robot.setAutoWaitForIdle(true); 

    robot.mouseMove(0, 0); 
    robot.delay(1000); 
    robot.mouseMove(200, 10); 
    robot.delay(1000); 
    robot.mouseMove(40, 130); 

    System.exit(0); 
    } 
} 

इस कोड का परीक्षण करने के लिए, यह JavaRobotExample.java फ़ाइल में डाल दिया, उसके बाद निम्न आदेश का उपयोग कर यह संकलन:

javac JavaRobotExample.java 

एक बार JavaRobotExample.class फ़ाइल का उत्पादन किया है, को चलाने के यहाँ एक कोड उदाहरण है यह:

java JavaRobotExample 

जावा रनटाइम डिफ़ॉल्ट रूप से मैक ओएस एक्स के साथ आता है। मैं हालांकि एसडीके (कंपाइलर) के बारे में निश्चित नहीं हूँ। यदि आपके पास javac कमांड नहीं है, तो बस Xcode इंस्टॉल करें।

+0

समस्या यह है कि, मैक माउस हैंडलिंग (और त्वरण) का परीक्षण कर रहा हूं और मैं चाहता हूं कि सिस्टम यह सोचें कि मैंने अपना माउस ले जाया है - यह देखने के लिए कि यह कर्सर को कैसे ले जाता है। मुझे लगता है कि यह कुछ निम्न स्तर की सामग्री है। मुझे पता है कि "sendmouse move x y" कमांड के साथ "nircmdc" का उपयोग करके विंडोज में यह संभव है। हालांकि कोड के लिए धन्यवाद, यह अन्य प्रयोग के लिए आसान होगा! :-) – Dae

+1

@Dae इस मामले में आपको अपने एचआईडी ड्राइवर या हुक को मौजूदा में लिखना होगा। ओएसएक्स के लिए एक ओपन सोर्स एक्सबॉक्स एचआईडी ड्राइवर है जिसे आप एक उदाहरण के रूप में उपयोग कर सकते हैं - http://xhd.cvs.sourceforge.net/viewvc/xhd/xhd/ –

+0

@VladLazarenko यह एक अच्छा जवाब है और मैं कुछ हूं पता लगाने के प्रयास जारी। सी के माध्यम से ऐसा करने का कोई तरीका है? मैं जावा के साथ रह सकता हूं लेकिन मुझे सी बेहतर पसंद है और यह जानना अच्छा लगेगा कि सी में ऐसा करने का कोई आसान तरीका है (सी # नहीं, उद्देश्य सी, आदि - बस सादा सी)। – drjrm3