最近需要做一个服务器一键开启客户端相同路径程序的功能,需要在服务器选择相应文件夹的程序,然后同时服务器客户度同时开启选中程序,首先需要从unity打开外部文件夹并选择文件的功能,具体操作如下:

首先创建一个单独的类,用来储存打开的系统窗口的设置,下面的变量没有特殊要求不需要做任何改动:

using UnityEngine;
using System.Collections;
using System;
using System.Runtime.InteropServices;[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public class OpenFileName
{public int structSize = 0;public IntPtr dlgOwner =IntPtr.Zero;public IntPtr instance = IntPtr.Zero;public String filter = null;public String customFilter = null;public int maxCustFilter = 0;public int filterIndex = 0;public String file = null;public int maxFile = 0;public String fileTitle = null;public int maxFileTitle = 0;public String initialDir = null;public String title = null;public int flags = 0;public short fileOffset = 0;public short fileExtension = 0;public String defExt = null;public IntPtr custData = IntPtr.Zero;public IntPtr hook = IntPtr.Zero;public String templateName = null;public IntPtr reservedPtr = IntPtr.Zero;public int reservedInt = 0;public int flagsEx = 0;}

然后我们需要在创建一个类导入Window的链接库,代码也不需要做更改:

using System.Runtime.InteropServices;public class LocalDialog
{//链接指定系统函数       打开文件对话框[DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]public static extern bool GetOpenFileName([In, Out] OpenFileName ofn);public static bool GetOFN([In, Out] OpenFileName ofn){return GetOpenFileName(ofn);//执行打开文件的操作}//链接指定系统函数        另存为对话框[DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]public static extern bool GetSaveFileName([In, Out] OpenFileName ofn);public static bool GetSFN([In, Out] OpenFileName ofn){return GetSaveFileName(ofn);//执行保存选中文件的操作}
}

完成上面两步就可以开始调用打开系统窗口选择文件的操作,我创建了一个类用来执行打开选择的方法,其中的打开文件夹方法如下:

 public void OpenDirectory(string type){openFileName = new OpenFileName();openFileName.structSize = Marshal.SizeOf(openFileName);openFileName.filter = "文件(*." + type + ")\0*." + type + "";openFileName.file = new string(new char[256]);openFileName.maxFile = openFileName.file.Length;openFileName.fileTitle = new string(new char[64]);openFileName.maxFileTitle = openFileName.fileTitle.Length;openFileName.initialDir = Application.streamingAssetsPath.Replace('/', '\\');//默认路径openFileName.title = "选择文件";openFileName.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000008;if (LocalDialog.GetSaveFileName(openFileName))//点击系统对话框框保存按钮{//TODO}

在这个方法里面要注意:对openFileName这个类里面的变量赋值就是设置系统窗口的效果,其中可以更改的地方有:

openFileName.title :表示打开的系统窗口名称

openFileName.filter:这个表示需要选择的文件类型,书写格式就是上面的格式,类型按照需求填写,打开的窗口效果如下:

我填写的类型是exe,可以选择的类型就是exe文件,

openFileName.filter = "文件(*." + type + ")\0*." + type + ""; \后面的意思就是剔除其他非exe文件,例如我后面有一个选择图片的功能,格式就是:openFileName.filter = "文件(*.png;*.jpg)\0*.png;*.jpg";表示选择png和jpg格式的文件,其他格式文件不在窗口显示,多种格式的文件选择加;隔开。效果如下:

到了这一步就可以进行打开外部文件夹选择文件了,当我们点击保存按钮就会执行红框里面的方法,就可以按照需求编写功能

欢迎加群:4364930讨论。

Unity打开外部文件夹并选择文件相关推荐

  1. 如何用c#打开文件夹并选择文件夹内的一个文件 open folder and select file

    如何用c#打开文件夹并选择文件夹内的一个文件 open folder and select file: 在运行中可以输入"Explorer /select,D:\somefile.txt&q ...

  2. 使用C#选择文件夹、打开文件夹、选择文件

    使用C#选择文件夹.打开文件夹.选择文件 - 摩根船长 - 博客园 http://www.cnblogs.com/szytwo/archive/2012/03/21/2410041.html usin ...

  3. matlab 选择文件夹、选择文件GUI和逐一读取文件夹中的文件

    matlab 选择文件夹.选择文件GUI和逐一读取文件夹中的文件 1. 选择文件夹路径: filepath = uigetdir('*.*','请选择文件夹');%fliepath为文件夹路径 2. ...

  4. QML 打开文件夹对话框选择文件保存路径

    import QtQuick 2.14 import QtQuick.Controls 2.14 import Qt.labs.platform 1.0ApplicationWindow {visib ...

  5. MFC初探 —— 文件与文件夹的选择与拷贝

    一.选择文件 其中CFileDialog类中的参数OFN_ALLOWMULTISELECT表示多个文件的选择,若只需要选择一个文件,删除该参数即可. /// <summary> /// 选 ...

  6. VC++ 打开文件夹,保存文件等对话框的调用

    2019独角兽企业重金招聘Python工程师标准>>> VC++ 打开文件夹,保存文件等对话框的调用 一.打开文件夹: 1.CFileDialog实现 CFileDialog hFi ...

  7. VB选择文件夹并取文件夹名

    代码如下: '引用Microsoft Shell Controls And Automation Dim ShellA As New Shell Private Sub Command1_Click( ...

  8. 织梦站内选择文件夹和图片文件排序后台模板管理按名称排序

    织梦站内选择图片排序是直接read()读取直接输出,如果我们同一时间上传了多个图片,在没有经过排序的情况下,我们去选择图片很难快速分辨哪个是刚刚上传的,解决方法是读取该目录的文件列表,用"文 ...

  9. python pandas合并多个excel_python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件)...

    # python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件) import tkinter as tk from tkinter import filedial ...

  10. 选择文件夹里指定文件图片路径_这简直是鼠标一拖,自动帮你整理好文件

    本文由阿刚同学原创,首发在乐软博客(www.isharepc.com) 欢迎关注乐软博客微信公众号"阿刚同学" 在日常工作学习中,长年累月的使用硬盘中的文件必定多如牛毛,如果没有特 ...

最新文章

  1. ORACLE 数据的逻辑组成
  2. STM32-USART控制led和蜂鸣器
  3. java我的世界1.7.2怎么下载模组_我的世界1.7.2
  4. 项目管理概述学习记录(二)
  5. 依据imu姿态角计算z轴倾角_1. 姿态的表示方法
  6. 如何在android进行ltp测试,Android系统完整性度量架构IMA-EVM
  7. NoSQL之Cassandra
  8. matplotlib scale 刻度
  9. 网络带宽与实际上传下载速度之间关系
  10. java method 注解_JAVA 注解详解及简单实例
  11. 【数据结构(C语言)】数据结构-树
  12. Hexo博客新建文章以及Next主题多层级分类
  13. 阴阳师服务器维护结界卡暂停吗,阴阳师3月17日更新维护公告 全部更新内容汇总...
  14. html 单元格拆分及合并,一键轻松搞定合并和拆分单元格-excel拆分单元格
  15. Gym - 101572K Kayaking Trip 二分
  16. 文件服务器+快照恢复,删除vmware ESXi快照文件 – 以任何方式恢复?
  17. PS怎么做出旧电视图像故障视觉特效
  18. linux安装压缩文件的工具,Linux上安装rar解压工具
  19. BOM中的history对象和navigator对象
  20. C语言修改dos窗口的大小

热门文章

  1. php论坛源代码,php论坛源代码下载
  2. solidworks2016安装教程及破解方法
  3. SolidWorks中最好用功能最强的BOM汇总工具:DDBOM2010
  4. 网络毕业设计 ——无线网规划与设计
  5. 电工/模电/数电/电气控制/PLC/单片机综合实验装置
  6. 推荐这三款软件让你实现PDF转WORD格式
  7. 对称加密算法基本介绍
  8. 驱动精灵扩展版(集成万能网卡驱动)无法自动识别网卡的解决方案
  9. [ASP调试]小旋风Web服务器使用
  10. 华为p6电信版 android 4.5,华为p6电信版驱动