如何控制要讓程序暫停和同步一個程序的實例,以便它們互不干擾,但是如何暫停,恢復或檢查狀態。使用我的應用程序控制Dropbox,Google Drive和/或SugarSync。
我在Dropbox api上瀏覽過,它看起來像你主要做的是上傳,下載等,但是我怎樣才能真正控制Dropbox實例或讓程序自己同步呢?
我可以在Python做這個或C++
如何控制要讓程序暫停和同步一個程序的實例,以便它們互不干擾,但是如何暫停,恢復或檢查狀態。使用我的應用程序控制Dropbox,Google Drive和/或SugarSync。
我在Dropbox api上瀏覽過,它看起來像你主要做的是上傳,下載等,但是我怎樣才能真正控制Dropbox實例或讓程序自己同步呢?
我可以在Python做這個或C++
Dropbox的API爲您提供的服務從交互自己的客戶,而不是您自動他們桌面客戶端應用程序(的東西,集成的方式方法到Finder/Explorer /等)。
編寫自己的客戶端來替換他們的客戶端,或者甚至寫一個與他們共存的客戶端可能不是不可能的(你將永遠設置爲「暫停同步」,而你的客戶端只能處理同步的東西......儘管每當本地存儲更改時都會失去自動觸發同步的好處,而必須輪詢更改或設置並行文件系統監視)。由於API是圍繞Web服務構建的,所以C++對於該語言來說是一個相當不錯的選擇,特別是因爲有預構建的Python包裝器。
但無論如何,我很確定這不是你想要做的。你想要的只是控制正常的桌面客戶端,並告訴它何時暫停或恢復同步,對嗎?
Web API(以及包裝它的SDK)不可能幫助你。您必須通過爲您的平臺使用適當的工具來自動化客戶端應用程序。而且,由於客戶端沒有自動化控制界面,因此必須通過自動化GUI來完成。
Mac OS X通過系統事件UI腳本可以通過系統事件UI腳本執行此操作,您可以通過ScriptingBridge
或appscript
或C++通過Python訪問...好吧,就是不要。 Windows只有通過手工合成WM_*
消息的較低級別方式,您可以通過pywin32
從Python執行此操作,也可以通過本機Win32 API從C++執行此操作。
但是,無論如何,這將是一個痛苦。例如,最簡單的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上......它隨着每個新版本的變化而變化,並且我不跟上。
非常有幫助的信息非常感謝,我想這不像我想的那麼容易,但仍然不是不可能的。 – Supremekhaoz
隨着Dropbox,你可以試試帶寬:https://www.dropbox.com/help/26/en – Evilunclebill
你是什麼意思的「保險箱實例」?您是否試圖控制位於機器上的Dropbox應用程序? – abarnert
@abarnert是的,如果有一種方法可以暫停並繼續使用API,或者我必須創建自己的客戶端。 – Supremekhaoz