macos - 通过拖动到 macOS 中的命令行应用程序来传递 C 参数

标签 macos drag-and-drop

我已经使用 XCODE 创建了一个适用于 MACOS 的命令行应用程序。

这是一个简单的 C 程序,接受作为 ARGV 传递到命令行的文件名。

我的问题是:如何在创建的可执行文件上启用拖放功能,以便只需将罚款拖动到可执行文件即可传递 ARGC 参数?

最佳答案

当您创建一个简单的可执行命令行程序时,当您将文件拖放到其上时,macOS 并不知道您想要做什么。您需要做的是创建一个合适的 macOS 应用程序。

要这样做:

  1. 打开Automator.app
  2. 创建一个新的应用程序
  3. 从左侧将运行 Shell 脚本拖至右侧 Pane
  4. 选择将输入→作为参数传递
  5. 作为脚本内容,输入:

    /path/to/test "$@"
    

    哪里/path/to/test是 C 可执行文件的实际路径。

  6. 将应用程序保存在您喜欢的任何位置。

将文件拖到新创建的 .app 上后,它只会调用您的 C 可执行文件并将文件名作为第一个参数传递,或者,如果文件很多,则传递所有文件。


举个例子,我做了一个小的Python脚本~/Desktop/test.py ,它需要可执行( chmod +x ~/Desktop/test.py ):

#!/usr/bin/env python
import sys
print("Running a script with " + str(sys.argv[1:])

然后我创建了以下 Automator 操作:

它的作用是捕获 Python 脚本的输出,并在脚本完成后显示包含该输出的通知。所以当我拖动 test.py文件到 .app ,我得到这个输出:

关于macos - 通过拖动到 macOS 中的命令行应用程序来传递 C 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57064400/

相关文章:

macos - 使用 Homebrew 升级 Git 时出现问题

java - 调用了错误的 onDrag 类

javascript - Electron 应用程序通知仅在开发版本(非构建)上显示

macos - 在Mono资源访问错误上运行ASP.NET

macos - OSX 上的 QtRuby 在计时器上恢复最小化窗口

objective-c - cocoa:拖放 svg 图像

Python Selenium 拖放

macos - 如何获取默认shell

delphi - 使用 Melander 的 DragDrop 套件时如何允许异常

javascript - 如何从 HTML 外部拖放 iframe?