2012-03-12 14 views
5

ठीक है, तो बहुत अधिक मैं एक स्ट्रिंग के कीस्ट्रोक भेजने और सक्रिय विंडो में बॉक्स संपादित करने और बाद में कुंजी कुंजी भेजने की कोशिश कर रहा हूं। क्या यहां किसी को डेल्फी 7 में ऐसा करने का काम करने की विधि पता है?डेल्फी 7 का उपयोग करके मैं किसी अन्य एप्लिकेशन को चाबियाँ कैसे भेज सकता हूं?

मैं अब इसके लिए डेढ़ घंटे की खोज कर रहा हूं और मुझे कुछ भी नहीं मिल रहा है और मुझे जो सामान मिला है वह डेल्फी के नए संस्करणों के लिए ईथर है, या यह काम नहीं करता है। मैंने टीटीचकेबोर्ड की कोशिश की है, लेकिन यह केवल डेल्फी 10 और नए के लिए है।

+2

क्या आपने अभी तक SendInput को आजमाया है? –

+2

क्या इसे डेल्फी होना चाहिए? Autohotkey देखो। –

उत्तर

9

मैंने इसका उपयोग किसी परेशानी वाले पॉपअप 3 जी एप्लिकेशन को बिना किसी इंटरफेस के पाठ भेजने के लिए किया है, यह एक हैक जिसे हम किसी भी विकल्प से नहीं छोड़ेंगे।

procedure TForm1.TypeMessage(Msg: string); 
var 
    CapsOn: boolean; 
    i: integer; 
    ch: char; 
    shift: boolean; 
    key: short; 
begin 
    CapsOn := (GetKeyState(VK_CAPITAL) and $1) <> 0; 

    for i:=1 to length(Msg) do 
    begin 
    ch := Msg[i]; 
    ch := UpCase(ch); 

    if ch <> Msg[i] then 
    begin 
     if CapsOn then 
     begin 
     keybd_event(VK_SHIFT, 0, 0, 0); 
     end; 
     keybd_event(ord(ch), 0, 0, 0); 
     keybd_event(ord(ch), 0, KEYEVENTF_KEYUP, 0); 
     if CapsOn then 
     begin 
     keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0); 
     end; 
    end 
    else 
    begin 
     key := VKKeyScan(ch); 
     // UpperCase 
     if ((not CapsOn) and (ch>='A') and (ch <= 'Z')) or 
     ((key and $100) > 0) then 
     begin 
     keybd_event(VK_SHIFT, 0, 0, 0); 
     end; 
     keybd_event(key, 0, 0, 0); 
     keybd_event(key, 0, KEYEVENTF_KEYUP, 0); 
     if ((not CapsOn) and (ch>='A') and (ch <= 'Z')) or 
     ((key and $100) > 0) then 
     begin 
     keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0); 
     end; 
    end; 
    end; 
end; 

आशा व्यक्त की कि

अद्यतन

संपादित में मदद करता है अन्य पात्रों (गैर अल्फा) की अनुमति के लिए यानी इकाई से अंकों के लिए स्थानांतरित कर दिया! "£ $ आदि

+0

बहुत ज्यादा थक्स! :) वह काम किया! :) ज़बर्दस्त मर्द। लेकिन क्या किसी को पता है कि मैं एंटर कुंजी कैसे भेजूंगा? – connorbp

+0

सुनिश्चित करें कि केवल TypeMessage (char (VK_RETURN)) पर कॉल करें; या अपने संदेश में char (VK_RETURN) जोड़ें – Dampsquid

+0

इस तरह से कोई भी अक्षर टाइप नहीं करता है। या: मैं उन्हें काम करने के लिए कैसे मिल सकता है? – connorbp

6

keybd_event फ़ंक्शन देखें। आपको चार्स और कीबोर्ड स्कैन कोड के बीच अनुवाद करने की आवश्यकता होगी, लेकिन इंटरनेट इस पर जानकारी से भरा है।

जब तक आपको टाइपिंग टाइप करने की आवश्यकता नहीं है, तो संपादन बॉक्स विंडो में WM_SETTEXT को भेजने और फिर कुंजीपटल के रूप में एंटर भेजें। यह आपको स्कैनकोड से निपटने से बचने देगा।

0

उपयोग SendKeys() डेल्फी 7 इंस्टॉलेशन सीडी पर SNDKEY32.PAS। यदि आपको अपनी सीडी नहीं मिलती है, तो here देखें। मेरे लिए ठीक काम करता है (विंडोज 7 पर डेल्फी 7)

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

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