控制Dropbox, Google Drive和/或SugarSync与我的应用程序
Control Dropbox, Google Drive, and/or SugarSync with my application.
我如何控制实例,我想让一个程序暂停和同步一次,使他们不相互干扰,但我如何暂停,恢复或检查状态。
我浏览了一下dropbox api,看起来你主要能做的是上传,下载等,但我怎么能控制dropbox实例或使程序同步它自己?
我可以在Python或c++中这样做
Dropbox API是您与自己的客户端服务交互的方式,而不是您自动他们的桌面客户端应用程序(集成到Finder/Explorer等中的东西)的方式。
编写自己的客户端来取代他们的客户端可能不是不可能的,或者甚至可以编写一个与他们的客户端共存的客户端(您将使他们的客户端永久设置为"暂停同步",而您的客户端只处理同步方面的事情……尽管您将失去每当本地存储更改时自动触发同步的好处,而是必须轮询更改或设置并行文件系统监视)。由于API是围绕web服务构建的,因此c++是一个非常糟糕的语言选择,特别是因为Python有预先构建的包装器。
但无论如何,我很确定这不是你想做的。您想要的只是控制普通的桌面客户端,并告诉它何时暂停或恢复同步,对吗?
web API(和包装它的sdk)不可能帮助你做到这一点。您必须通过使用适合您平台的工具来自动化客户端应用程序。而且,由于客户端没有自动化控制界面,您必须通过自动化GUI来实现。
Mac OS X有一个高级的方法来做到这一点,通过系统事件UI脚本,你可以从Python通过ScriptingBridge
或appscript
,或c++通过…Windows只有一种低级的方法来做到这一点,通过手工合成WM_*
消息,你可以通过Python通过pywin32
或c++通过本地Win32 API来完成。
然而,不管怎样,这都将是一个痛苦的过程。例如,最简单的Python appscript
解决方案可能看起来像这样(未经测试):
sysev = appscript.app('System Events')
dropbox = sysev.application_processes['Dropbox']
menu = dropbox.menu_bars[1].menu_bar_items[-1].menus[1]
item = menu.items['Pause Syncing']
item.click()
对应的Windows操作将更加混乱,包括发送WM_*
消息以获取菜单,拆分结构等。
使用高级GUI自动化工具要容易得多。Mac OS X自带Automator。创建一个工作流,点击记录,拉下Dropbox菜单,点击"暂停同步",点击停止,你就完成了。Actions可能是windows上最相似的工具,但还有许多其他选项,比如AutoIt,可能更好。
那么,在创建了Automator动作或AutoIt脚本之后,如何从Python或c++中触发它呢?好吧,你可能不需要。您已经有了一些可以双击或从shell运行的东西。如果你想用Python封装它,你可以,例如,通过subprocess
模块(在Mac上使用open
命令,在Windows上使用shell=True
)。
- 我的神经网络不起作用 [XOR 问题]
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我的字符计数代码计算错误.为什么
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- cmake在我的项目中所需的所有静态库都不成功
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 为什么我的for循环不能正确获取argv
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 0-1背包代码中的错误.我的代码中有什么错误
- 当我的阵列太大时出现分段错误
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 为什么二进制搜索在我的测试中不起作用
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- OpenGL在启用深度测试时不会丢弃我的碎片
- 为什么我的 std::ref 无法按预期工作?
- clang整洁10忽略了我的NOLINT命令
- 控制Dropbox, Google Drive和/或SugarSync与我的应用程序