如何在C++访问 Apple Events "openFile" 活动?
How can I access the Apple Events "openFile" event in C++?
我有兴趣用c++为Mac OS X编写一个小实用程序,用于读取,解析,保存(重写)写文件。我不需要任何GUI、菜单或窗口。
- 在XCode中我需要用什么类型的项目模板开始?
- 我如何访问传入的文件?(它与Apple Events
openFile
一起传递,对吗?)
我做过一点c++,但没有在Mac上做过。链接很受欢迎,代码示例更受欢迎。
您打算如何向应用程序传递文件?
如果是通过命令行,那么您将使用命令行工具模板并访问命令行参数,就像您在任何POSIX平台(argc
和argv
)上一样。
如果你想用Finder传递文件到你的应用程序,比如说,通过将文件放到应用程序图标上,那么你将使用Cocoa应用程序模板。
Info。plist文件包含应用程序配置和支持的文档类型,类似于Windows上的注册表。
-
配置Info。通过项目设置的"信息"选项卡(它是XCode文件导航器中最顶部的文件)。点击右下角的"添加"按钮,然后选择"添加文档类型",添加您的申请将接受的文档类型。要接受所有文档,将文档名称设置为
All
,并将扩展名设置为*
。更多信息在这里。 -
在Info中添加
LSUIElement
键。plist,并将其值设置为YES
,以指示您的应用程序没有UI。这个键在XCode中也显示为"Application is agent"。 -
在主菜单中。你可以删除默认存在的窗口和字体管理器对象,因为你不需要它们。
-
重命名AppDelegate。. m文件到AppDelegate。mm,以便它被编译为objective - c++。
-
在
applicationDidFinishLaunching:
委托方法中,添加[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。你想要的。例如:
#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中的应用程序图标上时,此代码将运行。
1)使用命令行工具模板。这个模板有几个选项。您可以从菜单中选择c++。
2)据我所知,IOstream将工作得很好。此外,在main()函数中有一个参数形参,您可以从这些参数中获得文件名。
http://www.cplusplus.com/reference/iostream/- 当可输入框在窗口中处于活动状态时获得通知的任何方法
- "错误 (活动) E1696 无法打开源文件 "stdafx.h"--
- glBindTexture 是否覆盖活动纹理单元的内容
- 在使用 gSoap 链接多个 SOAP 服务时启用保持活动状态
- 使用动态编程以有限的资金选择活动
- CMake:Android Studio 原生活动项目无法在项目根目录之外找到第三方库
- 使用 IP 帮助程序的 Windows 中活动 UDP 连接的远程地址
- V8垃圾收集器回调,用于测量GC活动
- C++活动异常机制背后的推理
- 生成线程并在运行时执行其他操作,只要它处于活动状态
- 如何确定boost msm中的特定状态是否为活动状态
- 使用nvprof进行评测时没有GPU活动
- 通过TCP连接到Wi-Fi上的0.0.0.0,而侦听器PC有活动的Wi-Fi,以太网没有'不起作用
- C++ 递减和显示活动方程
- 如何在QT中为QInputDialog输入密码时设置背景非活动和灰色?
- OpenGL:零活动制服
- 使用不同参数匹配器的同一方法ON_CALL AND EXPECT_CALL会产生饱和和活动误差
- GCC (libstdc++) 运行时如何在异常处于活动状态时决定终止 ()
- 如何按z顺序获取第二个活动窗口?
- 如何在C++访问 Apple Events "openFile" 活动?