如何在C中访问Apple Events“openFile”事件?

如何在C中访问Apple Events“openFile”事件?,第1张

概述我有兴趣在C中为Mac OS X编写一个小实用程序来读取,解析,保存(覆盖)写入文件.我不需要任何GUI,菜单或窗口. >我需要在XCode中开始使用哪种类型的项目模板? >如何访问传入的文件? (这是通过Apple Events openFile传递的,对吧?) 我做了一点C,但没有在Mac上.链接赞赏,代码样本赞赏更多. 您打算如何将文件传递给您的应用程序? 如果是通过命令行,那么您将使用命令 我有兴趣在C中为Mac OS X编写一个小实用程序来读取,解析,保存(覆盖)写入文件.我不需要任何GUI,菜单或窗口.

>我需要在XCode中开始使用哪种类型的项目模板?
>如何访问传入的文件? (这是通过Apple Events openfile传递的,对吧?)

我做了一点C,但没有在Mac上.链接赞赏,代码样本赞赏更多.

解决方法 您打算如何将文件传递给您的应用程序?

如果是通过命令行,那么您将使用命令行工具模板并访问命令行参数,就像在任何POSIX平台(argc和argv)上一样.

如果您想使用Finder将文件传递给您的应用程序,例如,通过将文件拖放到应用程序图标上,那么您将使用Cocoa应用程序模板.

Info.pList文件包含您的应用程序配置和支持的文档类型,类似于Windows上的注册表.

>您可以通过项目设置的“信息”选项卡配置Info.pList(它是XCode文件导航器中的最顶层文件).单击右下角的“添加”按钮,然后选择“添加文档类型”以添加应用程序将接受的文档类型.要接受所有文档,请将文档名称设置为“全部”并将扩展名设置为*. More info is here.
>在Info.pList中添加一个lsuielement键,并将其值设置为YES以指示您的应用程序没有UI.此密钥在XCode中也显示为“Application is agent”. More info on LSUIElement is here.
>在MainMenu.xib中,您可以删除默认情况下存在的Window和Font Manager对象,因为您不需要它们.
>将AppDelegate.m文件重命名为AppDelegate.mm,以便将其编译为Objective-C.这将允许您在该文件中使用C代码.
>在applicationDIDFinishLaunching:delegate方法中,添加[NSApp terminate:nil];以便您的应用程序在完成其工作后立即退出.

将以下方法添加到AppDelegate.mm:

- (BOol)application:(NSApplication*)app openfile:(Nsstring *)filename{    NSLog(@"opening file %@",filename);    char* cfilename = [filename UTF8String];        // Your C++ code goes here    return YES;}

而已.剩下的就是你的C代码.您可以将任何C代码添加到您想要的AppDelegate.mm.例如.:

#include <string>#include <iostream>#include "MyCppfileProcessor.h"- (BOol)application:(NSApplication*)app openfile:(Nsstring *)filename{    std::string cfilename([filename UTF8String]);    std::cout << "Processing file: " << cfilename << std::endl;    MyCppfileProcessor fileProcessor;    fileProcessor.processfile(cfilename);    return YES;}

每当您将文档放入Finder中的应用程序图标时,此代码都将运行.

总结

以上是内存溢出为你收集整理的如何在C中访问Apple Events“openFile”事件?全部内容,希望文章能够帮你解决如何在C中访问Apple Events“openFile”事件?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1072296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存