2010-01-13 15 views
6

मैं जानना चाहता हूं कि मैं किसी भी विंडो से हाइलाइट किए गए टेक्स्ट को कैसे प्राप्त कर सकता हूं: (एक्सेल, यानी फ़ायरफ़ॉक्स, ...)। कृपया ध्यान दें कि निम्न संदेश उपरोक्त एप्लिकेशन WM_GETTEXT, WM_COPY, EM_GETSELTEXT में काम नहीं करता है।सक्रिय विंडो से हाइलाइट किया गया टेक्स्ट

मैंने सी (कॉपी) को नियंत्रित करने और क्लिपबोर्ड से चयनित टेक्स्ट प्राप्त करने का भी प्रयास किया है, लेकिन यह एक अच्छा विचार नहीं है।

भाषा का उपयोग: सी #

+1

कॉपी कमांड भेजना वास्तव में बहुत विनम्र नहीं है, अगर कोई दुर्व्यवहार वाला ऐप मेरे क्लिपबोर्ड को छेड़छाड़ करेगा तो मैं काफी परेशान हो जाऊंगा जिसमें मैंने चीजों को एक उद्देश्य के साथ रखा होगा। –

उत्तर

1

कोई जवाब नहीं है? खैर, मुझे पता है कि आप इसे इंटरऑप का उपयोग कर एक्सेल, वर्ड इत्यादि से प्राप्त कर सकते हैं। उसमें देखो। यह आपको यानी और एफएफ के साथ आगे बढ़ने के बारे में कुछ विचार दे सकता है। लेकिन मूल रूप से प्राप्त करने वाले आवेदन में आपको ऐसा करने के लिए कुछ प्रकार की मोहकता होनी चाहिए और मुझे नहीं लगता कि कोई सामान्य तरीका है जो हर समय काम करता है।

-1

इसे स्क्रैच से सी # में लिखने की आवश्यकता नहीं है। क्लिपबोर्ड का उपयोग करने में क्या गलत है? यह स्क्रिप्ट यह सुनिश्चित करती है कि क्लिपबोर्ड पर जो खत्म हो गया है, वह पुनर्स्थापित करता है।

Autohotkey यह इतना आसान बनाता है।

; Hotkey: Ctrl Shift t 

^!t:: 

; Remember what was in the clipboard 
clipboardPrev = %clipboard% 

; Clear the clipboard 
clipboard:= 

Sleep,200 

; Send a Ctrl C to copy the current selection 
SendInput, {Ctrl down}c{Ctrl up} 

Sleep,200 

; Get the current selection from the clipboard 
selectedText=%Clipboard% 

if SelectedText = 
{ 
    ; If the first attempt didn't get any test, try again 
    Sleep,200 

    ; Send a Ctrl C to copy the current selection 
    SendInput, {Ctrl down}c{Ctrl up} 

    ; Get the current selection from the clipboard 
    selectedText=%Clipboard% 

} 

; Restore the clipboard 
clipboard=%clipboardPrev% 

MsgBox, %selectedText% 

return 
+2

मेरा मानना ​​है कि आपका उत्तर गलत भाषा में है;) – caesay

+0

मुझे समझ में आता है कि वह सी # में इसके लिए पूछ रहा है लेकिन इसमें * बहुत * काम और परीक्षण होगा। आप इसे निष्पादन योग्य में संकलित कर सकते हैं और फिर प्रोसेस क्लास का उपयोग कर सी # एप्लिकेशन से कॉल कर सकते हैं। – Ash

+0

नमस्ते, आपके उत्तर में वर्तमान में मेरे आवेदन में मैं क्लिपबोर्ड विधि का उपयोग कर रहा हूं, लेकिन मुझे Google क्रोम के साथ समस्याएं आ रही हैं। Google क्रोम पर नियंत्रण सी भेजने के बाद, चयनित टेक्स्ट या क्लिपबोर्ड मान खाली है। मैंने वर्डवेब जैसे कई कार्यक्रम देखे हैं .. जो क्लिपबोर्ड का उपयोग किए बिना हाइलाइट किए गए टेक्स्ट को प्राप्त कर सकते हैं, मैं इसे कैसे कर सकता हूं? मेरी खराब अंग्रेजी के लिए खेद है। – Gaby

1

इस प्रश्न का कोई सामान्य उद्देश्य उत्तर नहीं है। प्रत्येक खिड़की वर्ग का एक अलग समाधान होगा।

उदाहरण के लिए, यदि hilighted पाठ एक संपादन विंडो में है, तो आप उपयोग कर सकते हैं EM_GETSEL चयन की सीमा प्राप्त करने के लिए, तो WM_GETTEXT पाठ प्राप्त करने के लिए (और फिर इसे नहीं चुना जाता हिस्सा एक तरह से फेंक) या EM_LINEFROMCHAR चालू करने के लिए उस समय चयनित टेक्स्ट को एक पंक्ति में प्राप्त करने के लिए लाइन इंडेक्स में और EM_GETLINE में शामिल है।

लेकिन यह किसी भी अन्य विंडो वर्ग के लिए काम नहीं करेगा।

1

मैंने इसे स्वयं नहीं किया है, लेकिन माइक्रोसॉफ्ट यूआई ऑटोमेशन एपीआई में आपके पास आवश्यक कार्यक्षमता होनी चाहिए।

यूआई ऑटोमेशन एपीआई वह है जो आप उपयोग करेंगे यदि आप अंधे लोगों की सहायता के लिए स्क्रीन रीडर बना रहे थे। तो यह निश्चित रूप से एक मनमाना आवेदन में चयनित पाठ तक पहुंचने में सक्षम होना चाहिए।

एक से शुरुआत कर सकते "पाठ पैटर्न अवलोकन" http://msdn.microsoft.com/en-us/library/ms745158.aspx

पर साथ होगा इसके अलावा सवाल 517694 पर अपनी नजर रखें। मुझे लगता है कि आप पाएंगे कि उस प्रश्न के उत्तर आपकी समस्या का समाधान करेंगे।

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