C# 如何实现全局WinAPI覆盖接口

C# 如何实现全局WinAPI覆盖接口,c#,.net,winapi,C#,.net,Winapi,我们需要为我们公司的用户实现一个通用的自动完成。基本上,当某人以#开头,然后键入姓名时,我们希望帮助他们使用自动完成选项(某种列表显示) 这需要在windows中的任何应用程序中工作 计划是捕获所有按键,寻找#字符,如果他们已经输入了,开始帮助他们自动完成。如果他们选择了一个选项,那么我们将名称的其余部分发送到当前光标位置,从而完成他们的名称 我们有按键部分工作,但我们不确定如何显示自动完成功能。我们如何使用Win32 API实现此UI?编辑控件具有,您也可以使用和。如何在任何应用程序中显示该控

我们需要为我们公司的用户实现一个通用的自动完成。基本上,当某人以#开头,然后键入姓名时,我们希望帮助他们使用自动完成选项(某种列表显示)

这需要在windows中的任何应用程序中工作

计划是捕获所有按键,寻找#字符,如果他们已经输入了,开始帮助他们自动完成。如果他们选择了一个选项,那么我们将名称的其余部分发送到当前光标位置,从而完成他们的名称


我们有按键部分工作,但我们不确定如何显示自动完成功能。我们如何使用Win32 API实现此UI?

编辑控件具有,您也可以使用和。

如何在任何应用程序中显示该控件,无论用户在何处键入(记事本、浏览器、outlook、word等),这都需要是全局的。您在任何应用程序中的意思是什么。您想将此控件附加到其他应用程序吗?在用户键入#关键字的任何位置(任何应用程序),我们都希望开始帮助他们自动完成。不可能,除非您创建一个附加到所有进程(APPINIT#u dll)的dll并对所有文本输入进行子类化,这必然会产生问题。什么是不可能的?我已经能捕捉到每一个按键。我只是不知道如何呈现ui…为什么您认为您需要为ui使用原始Win32 API?C#已经为您提供了多个GUI框架(WinForms、WPF),其中任何一个都可以满足您的需要。我的意思是,这是一个非常糟糕的主意(如果我在贵公司,我需要能够在不触发您的姓名列表的情况下键入
#define
#include
),但这是非常有可能的。我为您的任何用户感到非常抱歉,他们的密码中有
#
字符……哈哈,谢谢Ben。这是一个例子,它不完全是我们正在做的。因此,我们不需要对提出的具体实施进行批评,只需要帮助实施。不过谢谢。制作一个窗口(WinForms或WPF)并将其位置设置为与接收到感兴趣的按键的窗口正好相邻有什么不对?您可以使用原始WinAPI创建UI,但这并不容易。@BenVoigt我想这就是我必须要做的。我已经开始做这方面的工作了,到目前为止还不错。谢谢你的提示。我现在遇到的问题是找到用户正在键入的位置…我知道如何获取光标(指针)位置(),但不知道窗口和他们正在键入的位置。。。