Microsoft Teams 中的滚动聊天窗口
Posted
技术标签:
【中文标题】Microsoft Teams 中的滚动聊天窗口【英文标题】:Scroll Chat Window in Microsoft Teams 【发布时间】:2022-01-23 23:44:51 【问题描述】:我正在尝试制作一个允许我从“Microsoft Teams”复制聊天(存档)的应用程序。
我使用 SPY++ 来获取窗口句柄,然后在我的程序中使用 WIN32 调用来获取相同的句柄
foreach (Process process in Process.GetProcesses())
if (process.MainWindowTitle.Contains("Microsoft Teams"))
IntPtr hwnd = process.MainWindowHandle;
EnumChildWindows(hwnd, callBackPtr, windowHandles);
StringBuilder sb = new(length);
foreach (object childHwnd in windowHandles)
GetClassName((IntPtr)childHwnd, sb, sb.Capacity);
if (sb.ToString().Contains("D3D", StringComparison.CurrentCultureIgnoreCase))
teamsChatWindowHwnd = (IntPtr)childHwnd;
break;
然后我想使用 SendKeys 发送鼠标滚动以向上滚动到最早的消息。我还没有完全弄清楚我将如何分辨,但这是一个循序渐进的过程。
SendMessage 代码
RECT rect;
GetClientRect(teamsChatWindowHwnd, out rect);
Point p = new Point(500, 500);
for (int i = 0; i < 100; i++)
SendMessage(teamsChatWindowHwnd, WM_MOUSEWHEEL, -120 << 16, ref p);
我尝试了不同版本的 SendMessage,并且还在记事本窗口上进行了测试。带有 SPY++ 的记事本窗口我可以看到正在发送的消息。使用 Teams,我看不到任何正在发送的消息。团队窗口是类:中级 D3D 窗口。
我也曾在 Google 上搜索过,试图找到类似的应用程序或其他任何东西,但似乎没有任何应用程序可以做到这一点。对于大多数归档方法,您必须是管理员。在网络版中尝试过几次,但似乎都没有对我有用。
【问题讨论】:
鉴于名称“中间 D3D 窗口”,它似乎不太可能是处理输入的窗口。操作另一个应用程序的受支持方式是 UI 自动化。这就是辅助技术程序用来控制其他应用程序的方法。 也许您应该使用正确的 Teams API,例如 docs.microsoft.com/en-us/graph/api/… @Philip Borchert - 请确认您的问题是否已通过上述建议解决或仍在寻求帮助? @Nivedipa-MSFT 不,这对我没有帮助。我想以普通用户而不是管理员的身份执行此操作。 @Raymond Chen 我研究了 ui 自动化,但没有找到任何有用的例子。 【参考方案1】:@Philip - 有 2 种方法可以在 Teams 中阅读聊天消息。
您可以使用 Graph API 阅读聊天消息: https://docs.microsoft.com/en-us/graph/api/chat-get?view=graph-rest-1.0&tabs=http
您可以使用基于消息操作的消息扩展: https://docs.microsoft.com/en-us/microsoftteams/platform/resources/messaging-extension-v3/create-extensions?tabs=typescript#initiate-actions-from-messages
您可以参考以下示例: https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/csharp_dotnetcore/51.teams-messaging-extensions-action
【讨论】:
@Chetan-msft 你有消息扩展记录消息的例子吗? @PhilipBorchert - 您可以参考下面的示例,该示例使用基于消息操作的消息扩展来对该特定消息进行操作。 github.com/microsoft/BotBuilder-Samples/tree/main/samples/… @PhilipBorchert - 请确认您的问题是否已通过上述建议解决或仍在寻求帮助? @PhilipBorchert - 请确认您的问题是否已解决或仍在寻求帮助? 我查看了您的 BOT 示例,但它没有完成我需要做的事情。我需要在没有管理员身份的情况下存档聊天记录。以上是关于Microsoft Teams 中的滚动聊天窗口的主要内容,如果未能解决你的问题,请参考以下文章
如何从在 Kiosk 模式下运行的 Microsoft Teams 客户端删除聊天记录?
[翻译] Microsoft Teams:删除成员账户其历史聊天会发生什么?