2016-08-09 65 views
1

So verwende ich ein Uhr-Ersatzprogramm. Das Problem ist, dass es auch auf die Uhr klickt. Wenn ich also im Infobereich auf die Uhr klicke, wird das Popup-Menü des Programms anstelle des Standard-Windows-Uhr-Widgets gestartet.Windows 10 natives Uhr-Widget programmgesteuert anzeigen

Ich versuchte auch AHK ControlClick auf TrayClockWClass. Ich habe immer noch kein originelles Widget bekommen. Gibt es eine Möglichkeit, das ursprüngliche Widget programmgesteuert zu starten? Ich benutze Windows 10 1607.

Mir geht es gut mit RunDll, API, SendMessage oder einer anderen Art und Weise.

+2

Dies ist nicht eine unterstützte Einrichtung, hier ist eine Flickschusterei, die einen Klick entsendet: http://stackoverflow.com/questions/3356309/windows-7-left-click-on-clock -popup –

+0

@AlexK. Dieses Beispiel funktioniert überhaupt nicht. Abgesehen von meinem Verständnis, das einzige, was es tut, ist auf das Steuerelement klicken (die auch nicht funktionieren) –

Antwort

0

Jemand hat heute meine Frage geupdated. Vielleicht suchen sie nach der Antwort. Ich habe es damals auf autohotkey.com Foren gepostet, und ich bekomme die Antwort dort.

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("ole32\CLSIDFromString", "WStr", "{618736e0-3c3d-11cf-810c-00aa00389b71}", "Ptr", &IID_IAccessible) 
    if (DllCall("oleacc\AccessibleObjectFromWindow", "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) 
}