首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Swift -获取另一个应用程序中当前打开的文档的文件路径

Swift是一种由苹果公司开发的编程语言,用于开发iOS、macOS、watchOS和tvOS应用程序。它具有简洁、安全、高效的特点,广泛应用于移动应用开发领域。

在Swift中,要获取另一个应用程序中当前打开的文档的文件路径,可以使用Apple提供的AppKit框架中的NSWorkspace类的shared属性来实现。具体步骤如下:

  1. 导入AppKit框架:
代码语言:txt
复制
import AppKit
  1. 使用NSWorkspace的shared属性获取共享的工作区实例:
代码语言:txt
复制
let workspace = NSWorkspace.shared
  1. 使用NSWorkspace的urlForApplication(withBundleIdentifier:)方法获取指定应用程序的URL:
代码语言:txt
复制
guard let appURL = workspace.urlForApplication(withBundleIdentifier: "com.example.AnotherApp") else {
    // 应用程序未安装或无法找到
    return
}
  1. 使用NSWorkspace的runningApplications属性获取当前正在运行的应用程序列表:
代码语言:txt
复制
let runningApps = workspace.runningApplications
  1. 遍历runningApps列表,找到目标应用程序:
代码语言:txt
复制
for app in runningApps {
    if app.bundleIdentifier == "com.example.AnotherApp" {
        // 找到目标应用程序
        // 使用NSAppleEventDescriptor的descriptorWithDescriptorType:bytes:length:方法构建Apple事件描述符
        let eventDescriptor = NSAppleEventDescriptor(descriptorType: typeKernelProcessID, bytes: &app.processIdentifier, length: MemoryLayout<pid_t>.size)
        
        // 使用NSAppleEventDescriptor的descriptorWithDescriptorType:data:方法构建Apple事件描述符
        let targetDescriptor = NSAppleEventDescriptor(descriptorType: typeApplicationBundleID, data: "com.example.AnotherApp".data(using: .utf8))
        
        // 使用NSAppleEventDescriptor的descriptorWithEventClass:eventID:targetDescriptor:returnID:transactionID:方法构建Apple事件描述符
        let appleEventDescriptor = NSAppleEventDescriptor(descriptorWithEventClass: kCoreEventClass, eventID: kAEOpenDocuments, targetDescriptor: targetDescriptor, returnID: kAutoGenerateReturnID, transactionID: kAnyTransactionID)
        
        // 使用NSAppleEventDescriptor的setParamDescriptor:forKeyword:方法设置参数描述符
        appleEventDescriptor.setParamDescriptor(eventDescriptor, forKeyword: keyDirectObject)
        
        // 使用NSAppleEventDescriptor的sendEventWithOptions:timeout:方法发送Apple事件
        let replyDescriptor = try? appleEventDescriptor.sendEvent(options: .defaultOptions, timeout: 60.0)
        
        // 使用NSAppleEventDescriptor的paramDescriptorForKeyword:方法获取返回的参数描述符
        if let replyDescriptor = replyDescriptor, let fileURL = replyDescriptor.paramDescriptorForKeyword(keyDirectObject)?.stringValue {
            // 获取到文件路径
            print(fileURL)
        } else {
            // 未能获取文件路径
        }
        
        break
    }
}

上述代码中,我们首先通过应用程序的Bundle Identifier获取应用程序的URL。然后,我们遍历当前正在运行的应用程序列表,找到目标应用程序,并构建一个Apple事件描述符,将目标应用程序的Bundle Identifier和目标应用程序的进程ID作为参数传递给该事件描述符。最后,我们发送该事件描述符,并从返回的参数描述符中获取文件路径。

需要注意的是,上述代码中的"com.example.AnotherApp"应替换为目标应用程序的Bundle Identifier。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 人工智能(AI):https://cloud.tencent.com/product/ai
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java 几种获取文件路径方式

前言 Java 开发我们经常要获取文件路径,比如读取配置文件等等。今天我们就关于文件路径和如何读取文件简单地探讨一下。 2. 文件路径 文件路径通常有 相对路径 与 绝对路径。...2.1 相对路径当前文件为基准进行一级级目录指向被引用资源文件。在 Java 代码当前运行代码所在位置为参照位置,只要被引用文件相对于引用文件位置不变就可以被读取到。...2.2 绝对路径 文件文件系统真正存在路径,是指从硬盘根目录(Windows为盘符)开始,进行一级级目录指向文件(从根目录一层层读写)。...Java 通过java.io.File 来进行文件操作。并且提供了以下三个方法来获取文件路径。 3.1 getPath 该方法返回文件抽象路径字符串形式。.../app.yml System.out.println("absolutePath = " + absolutePath); 同时我们发现该方法只解析当前目录(上面代码所在目录)相对路径,如果初始化路径包含了

10.9K20

php dirname(__FILE__) 获取当前文件绝对路径

比如当前文件是放在(d:\www\)下,文件名是test.php <?...php echo __FILE__ ; // 取得当前文件绝对地址,结果:D:\www\test.php echo dirname(__FILE__); // 取得当前文件所在绝对目录,结果:D...> 使用方法提示,  dirname(__FILE__) 取到当前文件绝对路径,也就是说,比起相对路径,查找速度是最快。 ...\\或者是/  所以重复使用时候可以认为 dirname() 把最下层目录当成文件名来处理了.照常返回  当前目录上级目录.这样重复就得到了它上一级目录. .../filename.php');  __FILE__路径当前代码所在文件  dirname(dirname(__FILE__));得到文件上一层目录名  dirname(__FILE__)

2.9K50

IOS获取各种文件目录路径方法

由于应用程序必须经过签名,所以您在运行时不能对这个目录内容进行修改,否则可能会使应用程序无法启动。...您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序偏好. Caches 目录:用于存放应用程序专用支持文件,保存应用程序再次启动过程需要信息。...4、tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程不需要信息。...(); 5,获取应用程序程序包中资源文件路径方法: 例如获取程序包中一个图片资源(apple.png)路径方法: NSString *imagePath = [[NSBundle mainBundle...iphone沙盒(sandbox)几个目录获取方式: [cpp] view plain copy // 获取沙盒主目录路径   NSString *homeDir =

5.4K20

Excel打开文档时提示“操作系统当前配置不能运行此应用程序

目前遇到情况: 前几天开通Office开发者账号,于是在Office 官网下载Office全家桶安装想打开Excel出现"操作系统当前配置不能运行此应用程序。"...于是按照往常一样百度查找问题 发现百度答案真**(爆粗口),一个答案全部抄袭 图片都是一样。意外发现 一个教程完美的解决了,方案如下 [zbf1n05eqm.png?...q-header-list=&q-url-param-list=&q-signature=be3808319a6b1834c66bc4a5565afd4597340c70] 解决方案 一、先找一下自己电脑中有没有...EXCEL词典(xllex.dll)这个动态库: 1.打开打Excel安装目录位置搜索xllex.dll这个文件(如果没有我把文件放最后了,自行下载 image.png 2.然后把这个文件给复制,粘贴到...image.png 3.这样就正常运行了,没有文件打开 点击下载 xllex.dll,在按照上面的步骤

3.8K51

获取路径某个json文件内容字符串

前言 实际项目中可能会有需要读取类路径下面的配置文件内容需求,由于springboot项目打包是jar包,通过文件读取获取方式开发时候没有问题,但是上到linux服务器上就有问题了,对于这个问题记录一下处理方式...类加载器方式 通过类加载器读取文件流,类加载器可以读取jar包编译后class文件,当然也是可以读取jar包文件流了 比如要读取resources目录下common/tianyanchasearch.json...(resourcePath); return GlobalResult.succeed(JSON.parseObject(content)); /** * 从输入流获取文件内容字符串...; } catch (IOException ex) { System.out.println("=======获取数据时...推测主要原因是springboot内置tomcat,打包后是一个jar包,因此通过文件读取获取方式行不通,因为无法直接读取压缩包文件,读取只能通过流方式读取

2.6K30

如何在 MSBuild 项目文件 csproj 获取绝对路径

通常我们能够在 csproj 文件仅仅使用相对路径就完成大多数编译任务。但是有些外部命令执行需要用到绝对路径,或者对此外部工具来说,相对路径具有不同含义。...这个时候,就需要将相对路径在 csproj 中转换为绝对路径来使用。 本文介绍如何在项目文件 csproj 中将一个相对路径转换为绝对路径。...在 MSBuild 4.0 ,可以在 csproj 编写调用 PowerShell 脚本代码,于是获取一个路径绝对路径就非常简单: 1 [System.IO.Path]::GetFullPath...WalterlvRelativePath))) 这样,就可以使用 $(_WalterlvAbsolutePath) 属性来获取绝对路径...你可以阅读我其他篇博客了解到 $(OutputPath) 其实最终都会是相对路径: 项目文件已知属性(知道了这些,就不会随便在 csproj 写死常量啦) - walterlv 如何更精准地设置

21630

Core在IIS热发布问题或者报错文件已在另一个程序打开

关于Core发布到IIS热发布问题,或者覆盖dll文件时候会报错"文件已在另一个程序打开",也就是无法覆盖程序问题,经过百度和分析总结以下几种方案: 一、使用app_offline.htm文件,...这个方案网上最多: 1.具体步骤: 1)在发布路径新建一个文件夹"UpdateFiles" 2)文件夹"UpdateFiles"里面放一个app_offline.htm文件,这个文件是网站处于离线状态时候返回给客户端页面内容...3)文件夹"UpdateFiles"里面放一个"PublishFiles"文件夹,这个文件夹里面放需要发布文件 4)在发布路径下面新建一个"pubish.bat"文件,里面输入如下内容:其实就是先复制...public IActionResult Update([FromServices]IHostApplicationLifetime application) { //获取程序工作目录路径...中部署2个相同网站服务,然后发布时候一个个发布更新网站,更一个时候,赞停另一个,这样就可以在不影响客户端情况下更新网站了。

2.3K20

“操作无法完成,因为其中文件夹或文件已在另一个程序打开解决方法

有时候,当我们删除某个文件时候,提示操作无法完成,因为其中文件夹或文件已在另一个程序打开。如下图所示: ?...这个时候我们一般会尝试如下操作: 先看看是不是有程序正在使用这个目录下文件,比如 Visual Studio,可是,有时候我们关闭了程序后,可还是会继续提示这样错误 或者继续删除目录下其他文件,...直到发现是哪个文件无法删除,然后再想想是不是有其他程序打开了呢?...不过作为一个程序员应该有更加精准方法,比如linux有一个命令叫做lsof命令可以查看正在被使用文件进程,然后再关闭响应进程。Windows同样有着类似的工具Process Explorer。...最好使用管理员权限打开工具 然后按Ctrl + F ,跳出查找框,输入无法删除目录名字,比如文中cpp 找到正在使用这个目录进程,然后根据进程名字或者进程号在Process Explorer或者任务管理器关闭进程即可

4.5K20

PyQt5 技巧篇-解决相对路径无法加载图片问题,styleSheet通过相对路径加载图片,python获取当前运行文件绝对路径

Python获取绝对路径 先说一下python获取当前运行文件绝对路径方法: import os url = os.path.dirname(os.path.abspath(__file__))...# 文件夹 url = os.path.abspath(__file__) # 文件 运行效果: C:\Users\Administrator\Desktop\lanzao_Robot\robot\...好像跟pyqt5自身绘图机制有关,父类子类啥。以后有空可以研究下。 既然只有绝对路径管用,那我就用绝对路径,变相相对路径。 我先获取到运行文件决定位置,再根据相对路径合成新路径。...# 获取绝对路径 url_father = os.path.dirname(os.path.abspath(__file__)) # 因为styleSheet里正斜杠才管用,我要把反斜杠转化为正斜杠...for i in url_father: if(i == "\\"): url = url + "/" else: url = url + i # 合成新路径并使用

2.2K30

前端测试题:(解析)如果要获取鼠标在当前文档位置,可以使用下面哪些属性?

考核内容: 鼠标事件 题发散度: ★ 试题难度: ★ 解题: JS在触发事件时,会自动生成event对象传入到事件函数。...element.onmouseover=function(e){ console.log(event===e) } 常用api或属性 target: 表示事件目标本身 event.target; currentTarget:当前冒泡标签...):阻止冒泡或捕获 event.stopPropagation(); 一图以概之 总结:event事件属性: pageX返回触发鼠标事件时,鼠标指针相对于当前页面(文档)水平坐标, pageY...返回触发鼠标事件时,鼠标指针相对于当前页面(文档)垂直坐标; screenX返回窗口/鼠标指针相对于屏幕水平坐标, screenY返回窗口/鼠标指针相对于屏幕垂直坐标; clientX返回触发鼠标事件时...,鼠标指针相对于当前窗口水平坐标, clientY返回触发鼠标事件时,鼠标指针相对于当前窗口垂直坐标; offsetX返回鼠标指针相对于目标元素边缘位置水平坐标, offsetY返回鼠标指针相对于目标元素边缘位置垂直坐标

1.1K30

(亲测解决)每次打开excel文件都会出现两个窗口,一个是空白sheet1,另一个是自己文档

每次打开Excel(WPS、Office都会出现,当前版本是Office2016)文件都会出现两个窗口,一个是空白sheet1,一个是自己文档,实在是很烦 2....因为每次打开一个文件就相当于打开两个,还会让Excel打开速度变慢,在网上找了很多解决办法,卸载重装过,但是都没有解决 二、问题原因 出现这个问题大部分是程序员电脑(哈哈),原因竟是安装MySQL数据库导致...【COM加载项】 -> 【取消勾选MySQL For Excel】然后确定 5.再打开Excel,只出现自己打开文档窗口,问题解决 6.如果关闭电脑再打开后还是有则采取终极方法,在加载项中找到...MySQL位置,然后在资源管理器中找到并将所示文件名改一个名称,如序号4所示。...这样一来纵它飞起来也不会打开两个窗口了 3.2 WPS解决步骤 1.WPS不能在MySQL文件夹中去改名,否则会报错 2.直接在COM加载项取消MySQL勾选即可 版权声明:

3K31

如何使用 Swift 开发 iOS PDF 查看器或编辑器

在当今移动网络时代,iOS 应用程序开发对于企业和开发人员至关重要。随着对于PDF 文件协作需求不断增加,构建 iOS PDF viewer 和编辑器可让终端用户轻松查看和编辑 PDF 文档。...在 Swift 开发 iOS PDF 查看器或编辑器在此部分,我们分步说明了如何在 Swift 开发 iOS 应用程序。...它包括架构所有二进制文件打开新建iOS项目,在右侧面板中选择General。...将您桥接头文件路径添加到 Objective-C Bridging Header 旁边,路径从项目根文件夹开始。...view.addSubview(pdfView)连接您设备或模拟器,然后使用快捷方式“Command+R”运行应用程序打开PDF 文件并显示。

3700
领券