2011-09-29 57 views
1

的文本框中我有這個問題,不知道從哪裏開始。我需要編寫一個將在WinCE中運行的程序,因此Compact Framework將是必需的,並且該程序必須在光標所在的位置編寫文本(字符串)。我的意思是,如果我的程序正在運行,並且光標在記事本窗口中。文本必須顯示在記事本中。或者,如果光標位於文本框內的其他應用程序(或者文本框,如果該應用程序是用java編寫的),則文本必須放置在該文本框中。C#將文本複製到焦點爲

我能夠完成程序所需的所有其他功能,但我不知道該怎麼做。據我所知,它是用API完成的。這就是我所能理解的。

任何幫助將被折衷。

謝謝!

回答

0

我們使用P/Invoke keybd_event來生成鍵盤輸入。我能想到的唯一的另一種方法是將你的字符串放入剪貼板,並生成一個粘貼鍵擊。我不確定你遇到的每個應用都會對CTRL + V做出相同的響應。也許有一種方法可以從應用程序中以編程方式觸發粘貼?

[DllImport("coredll.dll", EntryPoint = "keybd_event", SetLastError = true)] 
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); 

這應該會生成一個無聲A按鍵。

keybd_event((byte)Keys.A, 0, 0, 0x0004); 
keybd_event((byte)Keys.A, 0, 0x0002, 0x0004); 
+0

我會去P/Invoke,因爲當我發現一個應用程序篡改我的剪貼板,我卸載它! – Tipx

+0

好點。但您始終可以保存並恢復之前的剪貼板數據,以免用戶惱火。仍然必須生成CTRL + V,據我所見,沒有辦法強制剪貼板粘貼,應用程序必須拉。 – Damon8or

+0

嗨,我認爲這可能會有所幫助,你怎麼能提供一個P/Invoke的例子?謝謝!! – BlackCath

2

首先想到的是SendKeys。這是一種模擬鍵入的簡單方法。

+0

我不認爲SendKeys函數是由Compact Framework支持的。 – Tipx