के साथ पत्र 'i' भेजना मैंने सी # विंडोज फॉर्म के साथ एक स्क्रीन कीबोर्ड बनाया। मैं कीस्ट्रोक भेजने के लिए Sendkeys.Send()
फ़ंक्शन का उपयोग करता हूं। सभी पत्र लेकिन पत्र i ठीक काम करता है। जब मैं कीबोर्ड पर पत्र मैं दबाई जाने वाली माइक्रोसॉफ्ट वर्ड खुला है, भेजता है Ctrl +Alt + मैं और प्रिंट संवाद खोलता है। यह नोटपैड ++ में भी वही है। लेकिन जब मैं नोटपैड में टाइप करने का प्रयास करता हूं तो यह ठीक काम करता है।SendKeys
मेरे कोड में मैं SendKeys.Send(value);
के साथ चाबियाँ भेजता हूं जहां मूल्य दबाए गए बटन का टेक्स्ट होता है। मुझे निम्नलिखित कोड के साथ पाठ मिलता है:
string s = ((Button)sender).Text;
कोई टिप्पणी नहीं है कि यह ठीक से काम क्यों नहीं करती है?
संपादित करें: मैंने केवल एक बटन के साथ एक नई विंडोज़ फॉर्म प्रोजेक्ट बनाई है और पूरा कोड नीचे है। अभी भी काम नहीं कर रहा है। किसी भी विचार की सराहना की जाएगी।
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SendKeys.Send("i");
}
// Prevent form being focused
const int WS_EX_NOACTIVATE = 0x8000000;
protected override CreateParams CreateParams
{
get
{
CreateParams ret = base.CreateParams;
ret.ExStyle |= WS_EX_NOACTIVATE;
return ret;
}
}
}
ओवरराइड फ़ंक्शन फ़ॉर्म को ध्यान केंद्रित करने से रोकने के लिए है। ताकि मैं अन्य अनुप्रयोगों में कीस्ट्रोक भेज सकूं जिनके पास फोकस है।
यह है एक्स सेकंड के लिए बटन दबाने? 'मान' क्या है, यह कोई कीवर्ड नहीं है? आप कुछ परिश्रम में पाते हैं कि '((MyClass) ऑब्जेक्ट के साथ कास्टिंग करने के बजाय' 'का उपयोग करके कास्टिंग (MyClass के रूप में ऑब्जेक्ट)'। दूसरा क्लास कास्ट अपवाद फेंकने के बजाय, ओबीजे माई क्लास नहीं है, तो शून्य वापस आ जाएगा। – MoonKnight
मुझे बहुत खेद है। यह मूल्य एस के बजाय स्ट्रिंग एस होगा। परिणाम बदलता नहीं है, मैं इसे भी ऐसा करता हूं: Sendkeys.Send ("i"); –
क्या आपने डीबगर का उपयोग यह जांचने के लिए किया था कि मूल्य क्या है? यह आपको समस्या को कम करने में मदद करेगा। –