以编程方式显示Windows 10本机时钟小部件



所以我使用了一个时钟替换程序。问题是它也劫持了时钟的滴答声。因此,每当我点击通知区域的时钟时,程序的弹出菜单就会启动,而不是默认的windows时钟小部件。

我还在TrayClockWClass上尝试了AHK ControlClick。我仍然没有得到原来的小部件。是否有任何方法以编程方式启动原始小部件?我用的是Windows 10 1607。

我很好与RunDll, API, SendMessage或任何其他方式。

今天有人给我的问题点赞了。所以也许他们在寻找答案。我把它贴在autohotkey.com论坛上,我在那里得到了答案。

https://autohotkey.com/boards/viewtopic.php?t=21274

ControlGet, hClock, Hwnd,, TrayClockWClass1, ahk_class Shell_TrayWnd ; https://autohotkey.com/board/topic/70770-win7-taskbar-clock-toggle/
if (hClock) {
    VarSetCapacity(IID_IAccessible, 16), DllCall("ole32CLSIDFromString", "WStr", "{618736e0-3c3d-11cf-810c-00aa00389b71}", "Ptr", &IID_IAccessible)
    if (DllCall("oleaccAccessibleObjectFromWindow", "Ptr", hClock, "UInt", OBJID_CLIENT := 0xFFFFFFFC, "Ptr", &IID_IAccessible, "Ptr*", accTrayClock))
        return
    VarSetCapacity(variant, A_PtrSize == 8 ? 24 : 16, 0), NumPut(VT_I4 := 3, variant,, "UShort")
    if (A_PtrSize == 4) ; https://autohotkey.com/boards/viewtopic.php?p=111355#p111355
        DllCall(NumGet(NumGet(accTrayClock+0)+25*A_PtrSize), "Ptr", accTrayClock, "Int64", NumGet(variant, 0, "Int64"), Int64, NumGet(variant, 8, "Int64")) ; IAccessible::DoDefaultAction
    else
        DllCall(NumGet(NumGet(accTrayClock+0)+25*A_PtrSize), "Ptr", accTrayClock, "Ptr", &variant) ; IAccessible::DoDefaultAction
    ObjRelease(accTrayClock)
}

相关内容

  • 没有找到相关文章

最新更新