use System use System.Reflection use System.Runtime.InteropServices class Program def main is shared objType = Type.getTypeFromProgID("Shell.Application") shell = Activator.createInstance(objType) param = @[ 0, "Hello, COM(Cobra) World!", 0, 36 ] folder = shell.getType.invokeMember( "BrowseForFolder", BindingFlags.InvokeMethod, nil, shell, param ) if folder nil Marshal.releaseComObject(folder) Marshal.releaseComObject(shell)