我正在 c#中开发一个通用应用程序,其中我想要来自任何活动窗口的文本。当用户按下热键时,我的应用程序将使用活动的Windows文本数据启动。
这是一个拼写检查应用程序。 我的问题是如何从Microsoft Document访问文本。 我试过所有system32.dll函数
[DllImport("user32.dll")]
static extern IntPtr GetActiveWindow();
[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, IntPtr msg,
int wParam, int lParam);
[DllImport("kernel32.dll")]
static extern uint GetCurrentThreadId();
[DllImport("user32.dll")]
static extern uint GetWindowThreadProcessId(int hWnd, int ProcessId);
System.Threading.Thread.Sleep(1000);
StringBuilder builder = new StringBuilder(500000);
int foregroundWindowHandle = GetForegroundWindow();
uint remoteThreadId = GetWindowThreadProcessId(foregroundWindowHandle,0);
uint currentThreadId = GetCurrentThreadId();
//AttachTrheadInput is needed so we can get the handle of a focused window in another app
AttachThreadInput(remoteThreadId, currentThreadId, true);
//Get the handle of a focused window
int focused = GetFocus();
//Now detach since we got the focused handle
AttachThreadInput(remoteThreadId, currentThreadId, false);
//Get the text from the active window into the stringbuilder
SendMessage(focused, WM_GETTEXT, builder.Capacity, builder);
Console.WriteLine("Text in active window was " + builder);
builder.Append(" Extra text");
//Change the text in the active window
SendMessage(focused, WM_SETTEXT, 0, builder);
//Console.ReadKey();
Console.Read();
但是这将仅从记事本,浏览器地址栏,wordpad等返回文本。 但实际上它不适用于微软产品,如ms office,excel ..等。
我希望来自任何活动窗口的文字进行拼写检查,任何人都可以帮我这个。?
Thanx In Advance。
答案 0 :(得分:0)
您无法从任何应用程序获取文本...但您可以开发按键应用程序,它可以从任何窗口获取击键并将其保存到您的应用程序....我在c#中开发了击键应用程序,但这是不能正常工作......当按下大写锁定键时,它会从任何窗口检测到击键但是会受到干扰....
答案 1 :(得分:0)
不可能.. 因为我的客户给了我他应用的旧应用程序.. 它将使用word,excel,ppt,记事本,wordpad等。 但是现在他希望它能用于普遍的...... 他给了我.exe文件...所以我不能检查代码.. 并且没有任何情况我向他询问他的旧应用程序代码..所以我也无法得到旧应用程序的代码......
所以有解决方案,这是有效的....