>>330
こんなのではダメですか?

function! Win32Help(topic)
  let fname = 'C:\path\to\help\file.help'
  if fnamemodify(fname,":e")=="chm"
    silent! execute "!start keyhh -\\#klink " . a:topic . "  " . fname
  elseif fnamemodify(fname,":e")=="hlp"
    silent! execute "!start winhlp32 -k " . a:topic . "  " . fname
  endif
endfunction
command! -nargs=1 Win32Help call Win32Help(<f-args>)
nmap <S-F1> :call Win32Help(expand('<cword>'))<CR>