2015-07-02 7 views
8

के साथ जावाएक्सेबिलिटी के लिए नमूना जावा ऐप चलाना मेरे पास एक नमूना जावा ऐप है जो मुझे मिला है जब मैंने javaaccessablity-2.0.2 डाउनलोड किया जो जावा एक्सेसिबिलिटी (जावा एक्सेस ब्रिज WindowsAccessBridge-32.dll के माध्यम से) का उपयोग करता है। हालांकि यह getAccessibleContextFromHWND सफलतापूर्वक कॉल करता है यह false देता है। कृपया ध्यान दें कि मुझे एचडब्ल्यूएनडी के लिए सही मूल्य मिलता है जिसे मैंने निरीक्षण उपकरण के माध्यम से सत्यापित किया है।64-बिट जावा एसडीके और 64-बिट विंडोज़

मेरे पास 64-बिट जावा एसडीके है जो मेरी विंडोज 64-बिट सिस्टम में स्थापित है। और निम्नलिखित कोड मैंने कोशिश की है। मैंने WindowsAccessBridge-64.dll के साथ भी प्रयास किया है, लेकिन यह वही व्यवहार देता है जो vmID है और _acParent को शून्य मानों के बजाय शून्य के रूप में वापस कर दिया जाता है।

class Program 
{ 

    [return: MarshalAs(UnmanagedType.Bool)] 
    [DllImport("WindowsAccessBridge-32.dll", CallingConvention = CallingConvention.Cdecl)] 
    public extern static bool getAccessibleContextFromHWND(IntPtr hwnd, out Int32 vmID, out Int64 acParent); 


    [DllImport("WindowsAccessBridge-32.dll", CallingConvention = CallingConvention.Cdecl, ThrowOnUnmappableChar = true, CharSet = CharSet.Unicode)] 
    private extern static void Windows_run(); 

    [DllImport("user32.dll", SetLastError = true)] 
    static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 

    static void Main(string[] args) 
    { 
     Int32 vmID = 0; 
     Int64 _acParent =0; 
     Windows_run(); 
     IntPtr hWnd = (IntPtr)FindWindow("SunAwtFrame","Standalone SwingApp"); 
     bool retVal = getAccessibleContextFromHWND(hWnd, out vmID, out _acParent); 

    } 
} 

मैं a similar post पढ़ा है लेकिन यह मेरी समस्या का समाधान नहीं किया।

+0

आप FindWindow द्वारा दिए गए मान के लिए क्या मिल रहा है? आपको एहसास है कि FindWindow से वापसी मूल्य एक विंडो * हैंडल * (एचडब्ल्यूएनडी) है, सूचक नहीं (IntPtr)? यदि आप गलत तरीके से एचडब्ल्यूएनडी पास कर रहे हैं, तो यह समझाएगा कि क्यों प्राप्त करने योग्य ContextFromHWND FALSE लौटाएगा .. –

+0

IntPtr सही आकार है पॉइंटर आकार के लिए उपयोग करने के लिए HWND –

+0

स्पष्टीकरण के लिए धन्यवाद @ डेविड हेफरन –

उत्तर

2

मुझे यह काम मिला। जब हम WindowsAccessBridge dlls शामिल परियोजनाओं का निर्माण कर रहे हैं तो इसे सही लक्ष्य प्लेटफ़ॉर्म संयोजन का चयन करने के साथ करना होगा। हमें यह काम करने के लिए बहुत से क्रमपरिवर्तनों का प्रयास करना होगा।

नीचे दिए गए लिंक में कोड है लेकिन आपको अभी भी काम करने के लिए उचित डीएल लोड करना होगा।

https://github.com/jdog3/JavaAccessBridge.Net-Sample

संबंधित मुद्दे