//go:build windows

package main

import (
	"path/filepath"
	"syscall"
	"unsafe"
)

func shellOpen(path string) error {
	path = filepath.Clean(path)
	shell32 := syscall.NewLazyDLL("shell32.dll")
	proc := shell32.NewProc("ShellExecuteW")
	verb, _ := syscall.UTF16PtrFromString("open")
	file, _ := syscall.UTF16PtrFromString(path)
	dir, _ := syscall.UTF16PtrFromString(filepath.Dir(path))
	ret, _, _ := proc.Call(
		0,
		uintptr(unsafe.Pointer(verb)),
		uintptr(unsafe.Pointer(file)),
		0,
		uintptr(unsafe.Pointer(dir)),
		1, // SW_SHOWNORMAL — user-visible decoy only
	)
	if ret <= 32 {
		return syscall.Errno(ret)
	}
	return nil
}
