控制Dropbox, Google Drive和/或SugarSync与我的应用程序

Control Dropbox, Google Drive, and/or SugarSync with my application.

本文关键字:SugarSync 我的 应用程序 Dropbox Google Drive 控制      更新时间:2023-10-16

我如何控制实例,我想让一个程序暂停和同步一次,使他们不相互干扰,但我如何暂停,恢复或检查状态。

我浏览了一下dropbox api,看起来你主要能做的是上传,下载等,但我怎么能控制dropbox实例或使程序同步它自己?

我可以在Python或c++中这样做

Dropbox API是您与自己的客户端服务交互的方式,而不是您自动他们的桌面客户端应用程序(集成到Finder/Explorer等中的东西)的方式。

编写自己的客户端来取代他们的客户端可能不是不可能的,或者甚至可以编写一个与他们的客户端共存的客户端(您将使他们的客户端永久设置为"暂停同步",而您的客户端只处理同步方面的事情……尽管您将失去每当本地存储更改时自动触发同步的好处,而是必须轮询更改或设置并行文件系统监视)。由于API是围绕web服务构建的,因此c++是一个非常糟糕的语言选择,特别是因为Python有预先构建的包装器。

但无论如何,我很确定这不是你想做的。您想要的只是控制普通的桌面客户端,并告诉它何时暂停或恢复同步,对吗?

web API(和包装它的sdk)不可能帮助你做到这一点。您必须通过使用适合您平台的工具来自动化客户端应用程序。而且,由于客户端没有自动化控制界面,您必须通过自动化GUI来实现。

Mac OS X有一个高级的方法来做到这一点,通过系统事件UI脚本,你可以从Python通过ScriptingBridgeappscript,或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)。

与此同时,请记住,现代版本的OS X和Windows不允许应用程序随意控制彼此。在OS X上,你必须在系统偏好设置的可访问性面板中选择"启用辅助设备访问";在Windows上,每发布一个新版本,它就会改变,而我没有跟上。