to have the great and stable 'StartKiller' utility (startkiller.com) as constantly running exe-file
in my case:
- 'mem usage' is 5140 k
- 'i/o write bytes' is always 232 (which is typical for more or less simple ahk-scripts or auto-it-scripts) (very seldom they write exactly 116 bytes, sometimes 232)
'StartKiller' completely removes the start-button and gives the space under it (so that a button of the first opened window occupied this space: as accurately/properly as possible)
but i think that there should be a way to get the same good-looking result via the ahk-code (there is an interest for such code)
1 less process (in the task manager) is always a good thing (if a user loses nothing)
but we still cannot substitute this utility with an ahk-code (which certainly may only be created by a very advanced and experienced ahk-user)
the 'StartKiller' does its main task simply and brilliantly:
the start-button literally vanishes from taskbar, making all other taskbar content just shift a little (and completely take the place which was occupied by the start-button)
as i know, not a single other program is capable of doing exactly this tidy and convenient change (both visually and functionally)
- visually: the taskbar simply gets a better appearance
- functionally: more space becomes available for really useful content like opened windows
so is it possible to create an ahk-code that could substitute the 'StartKiller'?
there is this example in the docs:
(i don't know if it could help but it is something at least)
Code: Select all
/*
Example: Temporarily remove the active window from the taskbar by using COM.
Methods in ITaskbarList's VTable:
IUnknown:
0 QueryInterface -- use ComObjQuery instead
1 AddRef -- use ObjAddRef instead
2 Release -- use ObjRelease instead
ITaskbarList:
3 HrInit
4 AddTab
5 DeleteTab
6 ActivateTab
7 SetActiveAlt
*/
IID_ITaskbarList := "{56FDF342-FD6D-11d0-958A-006097C9A090}"
CLSID_TaskbarList := "{56FDF344-FD6D-11d0-958A-006097C9A090}"
; Create the TaskbarList object and store its address in tbl.
tbl := ComObjCreate(CLSID_TaskbarList, IID_ITaskbarList)
activeHwnd := WinExist("A")
DllCall(vtable(tbl,3), "ptr", tbl) ; tbl.HrInit()
DllCall(vtable(tbl,5), "ptr", tbl, "ptr", activeHwnd) ; tbl.DeleteTab(activeHwnd)
Sleep 3000
DllCall(vtable(tbl,4), "ptr", tbl, "ptr", activeHwnd) ; tbl.AddTab(activeHwnd)
; Non-dispatch objects must always be manually freed.
ObjRelease(tbl)
vtable(ptr, n) {
; NumGet(ptr+0) returns the address of the object's virtual function
; table (vtable for short). The remainder of the expression retrieves
; the address of the nth function's address from the vtable.
return NumGet(NumGet(ptr+0), n*A_PtrSize)
}