2011-06-03 73 views
0

我想寫一個腳本,可以控制不同的程序(設置位置和大小)的不同窗口。我已經掌握了一些關於工作的事情,但我在準確識別Windows時遇到了問題。現在我得到了:有沒有辦法讓任何給定的窗口永久標識符

tell application "System Events" 
    tell application "Mail" 
     set windowName to name of window 1 
    end tell 
end tell 

這是我現在工作的一個相當簡化的版本。我獲取了很多不同的應用程序窗口信息,並存儲它們作爲正在被另外一個腳本後呼籲性質:

tell application "System Events" 
    tell application "Mail" 
     set position of window windowName to valueX 
    end tell 
end tell 

這工作只要窗口的名稱不會改變。在許多其他應用程序中,我沒有任何問題,因爲窗口標題不會改變(iCal,iChat等)。在郵件中,窗口標題會根據電子郵件箱中的電子郵件數量而變化。如果電子郵件進入腳本的第一部分和最後一部分之間,則腳本失敗。

我不能真正引用窗口的索引號,因爲這些窗口的順序會隨着窗口順序的變化而改變(從前到後)。我想可能窗口ID會起作用,但即使應用程序已退出並重新啓動,並且如果應用程序重新啓動,ID號碼也會更改,我仍需要腳本才能正常工作。我是SOL嗎,還是有我沒有想到的東西?

回答

0

不是SOL,但你必須做更多的工作。只有幾種類型的窗口。你有主瀏覽器窗口,你有電子郵件消息,無論是他們正在撰寫的草稿或他們正在閱讀的電子郵件。也許你也在關注偏好窗口。所以你必須存儲窗口的類型。如果它是瀏覽器,那麼你還必須存儲當前選擇的消息。如果它是一個電子郵件窗口,那麼您也存儲消息ID。對於瀏覽器,您只需打開一個新的瀏覽器窗口並恢復選擇。對於電子郵件,您只需打開郵件。你必須檢查郵件字典的其他類型的窗口,但這個想法將是相同的。

+0

Yikes,這將是很多工作......現在,我抓住每一個可見的真實過程,然後在所有窗口中循環記錄他們的名字,大小和位置。如果我不得不爲每個過程寫出更多的工作陳述。 – Kris 2011-06-05 21:30:02

+0

是的,如果你想重新創建一個用戶在所有運行的程序中打開的所有窗口,這是一個巨大的任務,因爲對於每個應用程序都沒有一個解決方案。我想這就是爲什麼現在沒有這樣的程序。這不是一個可行的任務。您可以定位一個應用程序或5個特定的應用程序,但不能使其適用於每個應用程序。 – regulus6633 2011-06-05 22:45:25

相關問題