【问题标题】:How to get the Microsoft Teams active meeting window with AutoHotkey?如何使用 AutoHotkey 获取 Microsoft Teams 活动会议窗口?
【发布时间】:2021-04-01 14:47:23
【问题描述】:

在 Microsoft Teams Windows 客户端中,我希望能够使用 AutoHotkey 识别当前活动的会议窗口。 考虑到您可以打开多个 Teams 窗口(弹出式聊天、主窗口、多个会议窗口,其中一些处于保留状态...)

(背景:我想这样做是为了能够发送会议特定的操作热键。)

【问题讨论】:

  • 您介意我重新问这个问题并悬赏一下,如果他们可以在没有用户输入的情况下自动确定哪个窗口是正确的会议窗口吗?鉴于 Window Spy 中的所有统计数据要么是空的、无用的,要么与主 Teams 窗口相同,因此我还想要一些可以识别哪个窗口是正确会议窗口的东西。此外,我认为弹出的聊天和会议窗口仅适用于已打开 MS Teams Beta 的人员,但据我所知,它可能也已添加到今年早些时候的主要版本中。
  • @Spyre Popout 聊天是很久以前发布的(根据快速谷歌搜索,大约在 2020 年 5 月左右)我不想为了赏金而重复这个问题。你不能给我的赏金吗?
  • 由于某种原因我不能;由于某种原因,我在此页面上实际上没有“开始赏金”按钮。但是,如果我回答任何其他问题,即使是已接受答案的问题,它也会向我显示按钮。
  • @Spyre meta.stackexchange.com/questions/54726/… 问题必须存在 2 天
  • 我不知道,我会启动它,因为现在按钮已经出现在我面前了。

标签: autohotkey microsoft-teams


【解决方案1】:

我采用了另一种基于 FindText 的方法来排除任何用户提示。 如果离开和恢复等 UI 元素可用于 100% 排除错误的窗口,它会检查团队窗口。

详细解释见本帖:https://tdalon.blogspot.com/2021/04/ahk-get-teams-meeting-window.html 与截屏。 这里的代码要点:https://gist.github.com/tdalon/d376a2ac395a41c5453904222cbcb529

摘录如下:

Teams_GetMeetingWindow(useFindText:="" , restore := True){
; See implementation explanations here: 
;   https://tdalon.blogspot.com/2021/04/ahk-get-teams-meeting-window.html
;   https://tdalon.blogspot.com/2020/10/get-teams-window-ahk.html

If (useFindText="")
    useFindText := PowerTools_GetParam("TeamsMeetingWinUseFindText") ; Default 1

If (useFindText) {
    If (restore)
        WinGet, curWinId, ID, A
    ResumeText:="|<>*138$51.zzzzzzzzw3zzzzzzzUDzzzzzzwtzzzzzzzbA64NU1kQ1423A04FUtUQNa8aAX0EXAlY1a9zUNaAbwt4Y0AlYHb4461aAkTzzzzzzzzU" ; FindText for Resume
    LeaveText:="|<>*168$66.zzzzzzzzzzzzzzzzDzzzzzy01zzDzzzzzs00TzDzzzzzk00DzDkkFW3U7k7zDUG9YFUDk7zD6T9YlUTs7zD0E841kTs7zD7nAAzszwDz022AAHzzzzz0UECS3zzzzzzzzzzzU"
}

WinGet, Win, List, ahk_exe Teams.exe
TeamsMainWinId := Teams_GetMainWindow()
TeamsMeetingWinId := PowerTools_RegRead("TeamsMeetingWinId")
WinCount := 0
Select := 0


Loop %Win% {
    WinId := Win%A_Index%
    If (WinId = TeamsMainWinId) { ; Exclude Main Teams Window 
        ;WinGetTitle, Title, % "ahk_id " WinId
        ;MsgBox %Title%
        Continue
    }
    WinGetTitle, Title, % "ahk_id " WinId  
    
    IfEqual, Title,, Continue
    Title := StrReplace(Title," | Microsoft Teams","")
    If RegExMatch(Title,"^[^\s]*\s?[^\s]*,[^\s]*\s?[^\s]*$") or RegExMatch(Title,"^[^\s]*\s?[^\s]*,[^\s]*\s?[^\s]*\([^\s\(\)]*\)$") ; Exclude windows with , in the title (Popped-out 1-1 chat) and max two words before , Name, Firstname               
        Continue
    
    If RegExMatch(Title,"^Microsoft Teams Call in progress*") or RegExMatch(Title,"^Microsoft Teams Notification*") or RegExMatch(Title,"^Screen sharing toolbar*")
        Continue
    
    If (useFindText) {
        ; Exclude window with no Leave element
        WinActivate, ahk_id %WinId%
        If !(ok:=FindText(,,,, 0, 0, LeaveText,,0)) {
            Continue
        } 
        
        ; Final check - exclude window with Resume element = On hold meetings
        If (ok:=FindText(,,,, 0, 0, ResumeText,,0)) {
            Continue
        } 
    }
        
    WinList .= ( (WinList<>"") ? "|" : "" ) Title "  {" WinId "}"
    WinCount++

    ; Select by default last meeting window used
    If WinId = %TeamsMeetingWinId% 
        Select := WinCount  
} ; End Loop

If (WinCount = 0)
    return
If (WinCount = 1) { ; only one other window
    RegExMatch(WinList,"\{([^}]*)\}$",WinId)
    TeamsMeetingWinId := WinId1
    PowerTools_RegWrite("TeamsMeetingWinId",TeamsMeetingWinId)
    return TeamsMeetingWinId
}

If (restore)
    WinActivate, ahk_id %curWinId%

LB := WinListBox("Teams: Meeting Window", "Select your current Teams Meeting Window:" , WinList, Select)
RegExMatch(LB,"\{([^}]*)\}$",WinId)
TeamsMeetingWinId := WinId1
PowerTools_RegWrite("TeamsMeetingWinId",TeamsMeetingWinId)
return TeamsMeetingWinId

} ; eofun

【讨论】:

    【解决方案2】:

    我试图通过窗口标题找到它,但 Teams 没有以特定方式命名会议窗口。

    我可以使用 AccViewer 发现主团队窗口的名称以“| Microsoft Teams,主窗口”结尾。所以至少我可以排除这个。

    Here 是我找到的最佳解决方案。 但它需要用户确认哪个窗口是当前会议窗口(如果不明显)。

    代码可以在这个 Gist 中找到:https://gist.github.com/tdalon/87590637e43479c90f355be90aff3842#file-teams_getmeetingwindow-ahk

    【讨论】:

      猜你喜欢
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多