JVM

2011-12-25 20 views
6

के बाहर चल रहे किसी भी लिनक्स/विंडोज एप्लिकेशन का स्क्रीनशॉट कैसे प्राप्त करें जावा के बाहर किसी एप्लिकेशन का स्क्रीनशॉट प्राप्त करने के लिए जावा का उपयोग करना संभव है, वीएलसी/विंडोज मीडिया प्लेयर कहें, इसे एक छवि ऑब्जेक्ट के रूप में स्टोर करें और फिर इसे जेएलएबल या एक समान प्रकृति के कुछ में प्रदर्शित करें? क्या किसी को पता है कि यह संभव है और यदि ऐसा है तो किसी के पास यह सामान्य विचार है कि इसे कैसे किया जाए?JVM

नोट: मुझे बस यह पता लगाने की आवश्यकता है कि स्क्रीनशॉट कैसे प्राप्त करें और इसे छवि ऑब्जेक्ट के किसी रूप के रूप में स्टोर करें। उसके बाद मैं इसका उपयोग कर सकता हूं, इसका उपयोग कर सकता हूं, इसे प्रदर्शित कर सकता हूं।

उत्तर

3

यहाँ विंडोज के लिए इस सवाल का जवाब (यकीन नहीं करता है, तो Alt + printScr लिनक्स पर काम करता है: पी) है

मैं एक तरह से alt आग रोबोट वर्ग का उपयोग कर इस

1. प्राप्त करने के लिए लगता है + प्रिंटस्क्रीन कमांड (यह क्लिपबोर्ड पर सक्रिय विंडो कैप्चर करता है)

2. क्लिपबोर्ड पढ़ें!

यहां कोड के दो टुकड़े हैं जो ऐसा करते हैं। मैंने वास्तव में कोशिश नहीं की है, लेकिन कुछ जो मैंने एक साथ पाई।

आग करने के लिए कोड क्लिपबोर्ड पर सक्रिय विंडो प्राप्त करने के लिए आदेश

import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.event.KeyEvent; 

public class ActiveWindowScreenShot 
{ 
/** 
    * Main method 
    * 
    * @param args (not used) 
    */ 
public static void main(String[] args) 
{ 
    Robot robot; 

    try { 
    robot = new Robot(); 
    } catch (AWTException e) { 
    throw new IllegalArgumentException("No robot"); 
    } 

    // Press Alt + PrintScreen 
    // (Windows shortcut to take a screen shot of the active window) 
    robot.keyPress(KeyEvent.VK_ALT); 
    robot.keyPress(KeyEvent.VK_PRINTSCREEN); 
    robot.keyRelease(KeyEvent.VK_PRINTSCREEN); 
    robot.keyRelease(KeyEvent.VK_ALT); 

    System.out.println("Image copied."); 
} 
} 

कोड क्लिपबोर्ड

// If an image is on the system clipboard, this method returns it; 
// otherwise it returns null. 
public static Image getClipboard() { 
    Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); 

    try { 
     if (t != null && t.isDataFlavorSupported(DataFlavor.imageFlavor)) { 
      Image text = (Image)t.getTransferData(DataFlavor.imageFlavor); 
      return text; 
     } 
    } catch (UnsupportedFlavorException e) { 
    } catch (IOException e) { 
    } 
    return null; 
} 

पर छवि को पढ़ने के लिए आप नियंत्रण प्रबंधन कर सकते हैं के रूप में आप की जरूरत है सेवा मेरे! अगर यह आपके काम का है, तो मुझे बताएं। लेकिन यह निश्चित रूप से इसे करने के लिए मेरे todo पर है!

+0

वाह! मैंने कभी ऐसा करने का सोचा नहीं। अच्छा काम साथी, मैं निश्चित रूप से कोशिश करूँगा। क्रिसमस की बधाई! –

+0

मेरी क्रिसमस! कृपया कोशिश करें और बताएं कि यह काम करता है! कुछ लोग 'जावा में कैसे किया जा सकता है' मेरे कानों के लिए बहुत कठोर लग रहा था! : पी – Shaunak

+0

विश्वास नहीं कर सकता कि मैंने इस बारे में सोचा था कि इस तरह से आप कितने फ्रेम प्रति सेकंड प्राप्त कर सकते हैं। – user4090

2

आप Robot नामक कक्षा का उपयोग करके पूरी स्क्रीन का स्क्रीन शॉट प्राप्त कर सकते हैं। दुर्भाग्य से आप शुद्ध जावा समाधान का उपयोग कर अन्य अनुप्रयोगों से संबंधित खिड़कियों का स्थान और आकार नहीं प्राप्त कर सकते हैं। ऐसा करने के लिए आपको अन्य टूल्स (स्क्रिप्टिंग, जेएनआई, जेएनए) की आवश्यकता है। ये उपकरण क्रॉस-प्लेटफॉर्म नहीं हैं।

+0

धन्यवाद साथी। क्या आपके पास कोई भी सिफारिश है जहां तक ​​मैं चाहता हूं कि वह सबसे तेज़, आसान और सबसे मजबूत है? यदि इसका कोई उपयोग है तो मेरे पास थोड़ा सी अनुभव है? मैं उत्सुकता से आपके जवाब का इंतजार कर रहा हूँ। –

+0

अरे, मेरा जवाब क्यों न दें! : पी – Shaunak

+0

@Alex: नीचे दिए गए मेरे उत्तर के बारे में आप क्या सोचते हैं? – Shaunak