当前位置: 首页 > news >正文

打开文件夹

using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using UnityEngine;

//unity3d调用win32打开对话框
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct OpenFileName
{
    public int structSize;
    public IntPtr dlgOwner;
    public IntPtr instance;
    public string filter;
    public string customFilter;
    public int maxCustFilter;
    public int filterIndex;
    public string file;
    public int maxFile;
    public string fileTitle;
    public int maxFileTitle;
    public string initialDir;  //打开路径     null
    public string title;
    public int flags;
    public short fileOffset;
    public short fileExtension;
    public string defExt;
    public IntPtr custData;
    public IntPtr hook;
    public string templateName;
    public IntPtr reservedPtr;
    public int reservedInt;
    public int flagsEx;
}

public class OpenPDF:MonoBehaviour
{
    [DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
    private static extern bool GetOpenFileName([In, Out] OpenFileName ofn);

    OpenFileName ofn;


    void Start()
    {
        ofn = new OpenFileName();
        ofn.structSize = Marshal.SizeOf(ofn);
        ofn.filter = "PDF文件(*.pdf)\0*.pdf;";
        ofn.file = new string(new char[256]);
        ofn.maxFile = ofn.file.Length;
        ofn.fileTitle = new string(new char[64]);
        ofn.maxFileTitle = ofn.fileTitle.Length;
        ofn.initialDir = "C:\\";
        ofn.title = "打开课件";
        ofn.defExt = "PDF";
        ofn.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;   //OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST| OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR    
    }

    public void OpenFile()
    {
        StartCoroutine(SelectFile());
    }
    IEnumerator SelectFile()
    {
        yield return 1;
        List<string> fliePath = GetFilePath();
        for (int i = 0; i < fliePath.Count; i++)
        {
            Debug.Log(fliePath[i]);
        }
    }

    /// <summary>
    /// 支持同时选择多个文件
    /// </summary>
    /// <returns></returns>
    public List<string> GetFilePath()
    {
        List<string> fliePath = new List<string>();
        if (GetOpenFileName(ofn))
        {
            string[] filePath = ofn.file.Split('\0');// ‘\0’可表示C++中的NULL
            for (int i = 0; i < filePath.Length; i++)
            {
                if (!string.IsNullOrEmpty(filePath[i])&&i!=0)
                {
                    fliePath.Add(filePath[0]+ filePath[i]);
                }
            }
        }
        else
        {
            Debug.Log("取消选择");
        }
        return fliePath;
    }
}

 

转载于:https://www.cnblogs.com/Jason-c/p/10621150.html

相关文章:

  • Spring Boot Service注入为null mapper注入为null @Component注解下@Value获取不到值 WebsocketServer类里无法注入service...
  • day27T2改错记
  • 《深度学习入门基于Python的理论与实现》PDF及代码+《21个项目玩转深度学习》PDF及代码+原理到实践总结...
  • 一些常用的正则表达式示例
  • C++学习(三十四)(C语言部分)之 链表
  • RIpng配置(GNS3)(第九组)
  • halcon预处理函数
  • [博弈论]
  • 一个正在读本科的计院学生
  • 排序算法之快速排序QuickSort
  • CSS中一个冒号和两个冒号有什么区别
  • MSF内网渗透 扫描模块
  • [转帖]安德斯·海尔斯伯格
  • [转帖]Linux分页机制之概述--Linux内存管理(六)
  • Linux的远程连接工具:SSH的安装
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • angular学习第一篇-----环境搭建
  • HTTP中的ETag在移动客户端的应用
  • JavaScript实现分页效果
  • Java知识点总结(JavaIO-打印流)
  • learning koa2.x
  • MySQL-事务管理(基础)
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 和 || 运算
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 前嗅ForeSpider中数据浏览界面介绍
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 微服务核心架构梳理
  • 找一份好的前端工作,起点很重要
  • 追踪解析 FutureTask 源码
  • 阿里云服务器购买完整流程
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • %@ page import=%的用法
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (一)基于IDEA的JAVA基础12
  • (转)树状数组
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .gitattributes 文件
  • .NET DataGridView数据绑定说明
  • .net MySql
  • .Net 路由处理厉害了
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [APIO2015]巴厘岛的雕塑
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [C++][基础]1_变量、常量和基本类型
  • [C++]STL之map
  • [ChromeApp]指南!让你的谷歌浏览器好用十倍!
  • [DevOps云实践] 彻底删除AWS云资源