2009-01-05 19 views
9

मैं जल्द ही कुछ परियोजनाओं पर काम करने की संभावना रखता हूं जहां मुझे फ़ाइल से डेटा लेने की आवश्यकता होगी और डेटा को प्रोग्रामेटिक रूप से किसी अन्य तृतीय पक्ष (मेरे स्वयं के नहीं) एप्लिकेशन में इनपुट करने की आवश्यकता होगी। एक समस्या: मुझे नहीं पता कि यह कैसे करना है। मुझे डेटा दर्ज करना होगा (परीक्षाओं के लिए समय शीट पर समय) क्या कोई मुझे इस कौशल को हासिल करने के लिए सही दिशा में चला सकता है?किसी प्रोग्राम के साथ प्रोग्रामेटिक रूप से कैसे बातचीत करें

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

मैंने ऐप को अन्य ऐप्स के साथ समान तरीके से इंटरैक्ट देखा है। एक अच्छा उदाहरण मैं सोच सकता हूं स्नैगैट, स्क्रीनशॉट उपयोगिता है। आप इसे किसी विशेष ऐप में विंडो को कैप्चर करने के लिए ऑर्डर कर सकते हैं, और जब आप अपने माउस को उस विंडो के चारों ओर ले जाते हैं, तो पॉइंटर के नीचे नियंत्रण लाल रंग में रूपरेखा होगा यह इंगित करने के लिए कि यह आपके लिए कौन सा नियंत्रण कैप्चर करेगा। मुझे लगता है कि यह दिलचस्प है, और शायद को में इस तरह के नियंत्रण में टाइप करने में सक्षम होने से शायद एक कदम दूर है।

अब तक टिप्पणियों और उत्तरों के लिए धन्यवाद, मैं उन सभी का पीछा कर रहा हूं।

+0

क्या आप प्रोग्रामिंग रूप से तृतीय-पक्ष ऐप के जीयूआई में डेटा दर्ज करना चाहते हैं? – Artelius

+0

@ माइक: आपकी आवश्यकताओं को स्पष्ट करने की आवश्यकता हो सकती है ... –

+0

फ्रेडरिक का जवाब अच्छा है, लेकिन सवाल को बेहतर आवश्यकताओं की आवश्यकता है क्योंकि मिच कहते हैं। – kenny

उत्तर

8

आप इसे AutoIt स्क्रिप्ट के साथ स्वचालित करने में सक्षम हो सकते हैं। यह एक साधारण पटकथा भाषा है जो खिड़कियों और नियंत्रणों को संदेश भेजने की कुछ जटिलताओं को छुपाती है।

+1

ऐसा लगता है कि मेरे मन में क्या था। आश्चर्यजनक रूप से, यह फ्रीवेयर है! अगर यह काम करता है और साथ ही मुझे आशा है कि दान दान होगा। –

6

विभिन्न अनुप्रयोग आपको विभिन्न तरीकों से प्रोग्रामेटिक रूप से नियंत्रित करने की अनुमति देते हैं। दो सबसे आम दृष्टिकोण हैं:

1) कुछ अनुप्रयोग कमांडलाइन तर्क का पर्दाफाश करते हैं। उदाहरण:

c:\> someapp.exe arg1 arg2 

आप इस प्रकार का कॉल के साथ एक सी ++ प्रोग्राम से ऐसे ऐप्स कॉल कर सकते हैं:

System("C:\\>someapp.exe arg1 arg2"); 

2) अन्य अनुप्रयोगों कहीं अधिक शक्तिशाली, वस्तु उन्मुख एपीआई का पर्दाफाश हो सकता है।

Excel.Application excelApp = new Excel.App() 

जिस एप्लिकेशन वस्तु है, तो आप अपने व्यवहार को नियंत्रित करने के लिए उस पर तरीकों कॉल कर सकते हैं: उदाहरण के लिए, माइक्रोसॉफ्ट एक्सेल अपने सी # कार्यक्रम में एक वस्तु के रूप ऐप खुद का उपयोग करके आप इसे कार्यक्रम की सुविधा देता है। तुम्हें पता है, उदाहरण के लिए, इस तरह बाद में एक कॉल के साथ नई Excel फ़ाइल खोल सकते हैं:

excelApp.Workbooks.Open("\\Somefile.xls", ...); 

आप नियंत्रण की कोशिश कर रहे किसी भी तीसरे पक्ष अनुप्रयोग के लिए, आप कैसे यह करने के लिए के रूप में अपनी प्रलेखन पढ़ने के लिए जा रहे हैं आपको ऐसा करने देता है। एक्सेल प्रोग्राम करने के बारे में जानकारी, उदाहरण के लिए, here मिल सकती है।

0

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

3

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

3

मुझे लगता है कि FindWindow और SendMessage वे कार्य हैं जिन्हें आप सामान्य रूप से उपयोग करना चाहते हैं।

0

या यदि आप और भी "हैकी" बनना चाहते हैं, तो प्रोग्राम मेमोरी पढ़ना शुरू करें और डेटा सीधे इंजेक्ट करें। : पी

लेकिन यह बहुत जटिल हो सकता है, और अक्सर प्रोग्राम काम की स्मृति का उपयोग करने के कारण काम नहीं करता है।

0

यह करने का सबसे सुंदर तरीका नहीं है, लेकिन मैंने कुछ एप्लिकेशन देखा है जो क्लिपबोर्ड का उपयोग इस तरह की चीजों को करने के लिए करते हैं। दुर्भाग्यवश, इसके लिए मैन्युअल हस्तक्षेप की भी आवश्यकता होगी क्योंकि संभवतः आपके पास प्रोग्राम को प्रोग्रामबोर्ड से क्लिपबोर्ड पर खींचने/पुश करने का कोई तरीका नहीं है।

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

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