SOLVED VIA SELF-HELP, HAIR-PULLING, AND TEETH-GRINDING.
THANKS ANYWAY.......
I'm using the GetMouseTaskbutton function from this thread on AHK forum.
[http://www.autohotkey.com/forum/topic22763.html&highlight=getmousetaskbutton][1]
; Gets the index+1 of the taskbar button which the mouse is hovering over. 
; Returns an empty string if the mouse is not over the taskbar's task toolbar. 
; 
; Some code and inspiration from Sean's TaskButton.ahk 
GetMouseTaskButton(ByRef hwnd) 
{ 
    MouseGetPos, x, y, win, ctl, 2 
    ; Check if hovering over taskbar. 
    WinGetClass, cl, ahk_id %win% 
    if (cl != "Shell_TrayWnd") 
        return 
    ; Check if hovering over a Toolbar. 
    WinGetClass, cl, ahk_id %ctl% 
    if (cl != "ToolbarWindow32") 
        return 
    ; Check if hovering over task-switching buttons (specific toolbar). 
    hParent := DllCall("GetParent", "Uint", ctl) 
    WinGetClass, cl, ahk_id %hParent% 
    if (cl != "MSTaskSwWClass") 
        return 
WinGet, pidTaskbar, PID, ahk_class Shell_TrayWnd 
hProc := DllCall("OpenProcess", "Uint", 0x38, "int", 0, "Uint", pidTaskbar) 
pRB := DllCall("VirtualAllocEx", "Uint", hProc 
    , "Uint", 0, "Uint", 20, "Uint", 0x1000, "Uint", 0x4) 
VarSetCapacity(pt, 8, 0) 
NumPut(x, pt, 0, "int") 
NumPut(y, pt, 4, "int") 
; Convert screen coords to toolbar-client-area coords. 
DllCall("ScreenToClient", "uint", ctl, "uint", &pt) 
; Write POINT into explorer.exe. 
DllCall("WriteProcessMemory", "uint", hProc, "uint", pRB+0, "uint", &pt, "uint", 8, "uint", 0) 
;     SendMessage, 0x447,,,, ahk_id %ctl%  ; TB_GETHOTITEM 
    SendMessage, 0x445, 0, pRB,, ahk_id %ctl%  ; TB_HITTEST 
    btn_index := ErrorLevel 
    ; Convert btn_index to a signed int, since result may be -1 if no 'hot' item. 
    if btn_index  0x7FFFFFFF 
        btn_index := -(~btn_index) - 1 
if (btn_index > -1) 
{ 
    ; Get button info. 
    SendMessage, 0x417, btn_index, pRB,, ahk_id %ctl%   ; TB_GETBUTTON 
    VarSetCapacity(btn, 20) 
    DllCall("ReadProcessMemory", "Uint", hProc 
        , "Uint", pRB, "Uint", &btn, "Uint", 20, "Uint", 0) 
    state := NumGet(btn, 8, "UChar")  ; fsState 
    pdata := NumGet(btn, 12, "UInt")  ; dwData 
    ret := DllCall("ReadProcessMemory", "Uint", hProc 
        , "Uint", pdata, "UintP", hwnd, "Uint", 4, "Uint", 0) 
} else 
    hwnd = 0 
DllCall("VirtualFreeEx", "Uint", hProc, "Uint", pRB, "Uint", 0, "Uint", 0x8000) 
DllCall("CloseHandle", "Uint", hProc) 
; Negative values indicate seperator items. (abs(btn_index) is the index) 
return btn_index > -1 ? btn_index+1 : 0 
}
It identifies the owner of the hovered taskbar button.
I'm using it in a routine to auto-activate window by hovering its taskbar button, and also a routine to close inactive window by middle-click on its taskbar button.
Works great on my XP machine.
The author had stated that the function does work in Vista, but it refuses to work for me in Vista 64-bit, so apparently it is only valid in 32-bit.  And I am very new to AHK, and don't know how to adapt it.
Unfortunately, my queries at the site sank without a trace.
Does anyone have advice for me?  I will be most grateful.
Thanks.