2017-09-08 39 views
0

我正在用Javascript編寫一個簡單的Automator腳本。是否可以將密鑰代碼發送給不在前面的應用程序?

我想向不在前面的OS X應用程序發送密鑰(或密鑰存儲)。

基本上,我想運行這段代碼,並在腳本打開某個應用程序,寫入文本並按回車時執行操作 - 所有這些都不會影響我的其他工作。

我想是這樣的: Application("System Events").processes['someApp'].windows[0].textFields[0].keyCode(76);

腳本解釋,有Processes SuitekeyCode方法。 上面的代碼,然而,拋出瞭如下錯誤: execution error: Error on line 16: Error: Named parameters must be passed as an object. (-2700)

我明白,下面的代碼工作正常,但它需要的應用程序在前面運行: // KeyCode 76 => "Enter" Application("System Events").keyCode(76);

更新:我試圖在iTunes(Apple Music)上搜索某些內容。這可能沒有提前使用iTunes應用程序?

+0

系統事件'鍵碼'_command_只根據重點。 – user3439894

+0

從我的「進入」經驗來看,我不認爲是這樣。 KeyCode方法的作用與Keystroke方法的「輸入」鍵代碼相同。在進行呼叫時,會向前端應用程序發送「回車」。 – gnis

回答

1

它可以編寫應用程序的文本,是不是在前面與GUI腳本無障礙)的幫助,但是:

  • 你需要知道什麼UI元素在窗口的特定 應用程序,並瞭解特定元素的屬性和屬性。
  • 您需要在System Preferences --> Security & Privacy --> Accessibility中添加腳本。

這裏的一個示例腳本(上MACOS塞拉利昂測試)以光標的「文本編輯」應用程序的前面文件中的位置寫入一些文本。

Application("System Events").processes['TextEdit'].windows[0].scrollAreas[0].textAreas[0].attributes["AXSelectedText"].value = "some text" + "\r" // r is the return KEY 

更新

把一些關鍵代碼到後臺應用程序,你可以使用框架CGEventPostToPid()方法。

這裏的腳本來搜索在iTunes一些文字(作品在我的電腦上,MACOS塞拉利昂的iTunes版本10.6.2)。

ObjC.import('Carbon') 
iPid = Application("System Events").processes['iTunes'].unixId() 
searchField = Application("System Events").processes['iTunes'].windows[0].textFields[0] 
searchField.buttons[0].actions['AXPress'].perform() 
delay(0.1) // increase it, if no search 
searchField.focused = true 
delay(0.3) // increase it, if no search 
searchField.value = "world" // the searching text 
searchField.actions["AXConfirm"].perform() 
delay(0.1) // increase it, if no search 

// ** carbon methods to send the enter key to a background application *** 
enterDown = $.CGEventCreateKeyboardEvent($(), 76, true); 
enterUp = $.CGEventCreateKeyboardEvent($(), 76, false); 
$.CGEventPostToPid(iPid, enterDown); 
delay(0.1) 
$.CGEventPostToPid(iPid, enterUp); 
+0

謝謝你的答案,但我在這裏談論實際的「輸入」功能。我的腳本正確地將文本寫入該UIElement,但它需要應用程序預先輸入「密鑰」代碼。我試圖在沒有將應用程序激活到前臺的情況下點擊「進入」。 – gnis

+0

如果不知道應用程序名稱,並且知道按「Enter」鍵時會發生什麼,則無法提供幫助。但是,有一些動作(**,如果可用**)模擬某些UI元素的輸入鍵,** AppleScript **示例:'執行某個特定元素的動作「AXConfirm」...' – jackjr300

+0

啊 - 對不起的信息。我試圖在iTunes(Apple Music)上搜索某些內容。我嘗試過沒有成功的執行「確認」操作 - 沒有任何反應。這可能沒有提前使用iTunes應用程序? – gnis

相關問題