Jak skopiować treść tekstową okna dialogowego w systemie OS X?

9

Wiele osób nie zdaje sobie sprawy, że w systemie Windows można skopiować całą zawartość tekstową MessageBox, naciskając Ctrl ⌃+, Cgdy okno dialogowe jest aktywne.

Jest to niezbędna funkcja do zgłaszania komunikatów o błędach, a w niektórych przypadkach mogą być ogromne.

Wygląda jednak na to, że w OS X to Command ⌘+ Cnie działa i zastanawiam się, czy istnieje inna metoda.

Robienie zrzutów ekranu nie jest tak wygodne, zwłaszcza że nie można ich przeszukiwać: str

Szukam ogólnego rozwiązania, jeśli istnieje . Oto przykład:

wprowadź opis zdjęcia tutaj

sorin
źródło
2
W niektórych przypadkach możesz zaznaczyć tekst za pomocą myszy / gładzika, a po zaznaczeniu możesz skopiować go za pomocą Cmd + C; ale niestety nie zawsze jest to możliwe
iolsmit
Wygląda na to, że zależy to od sposobu, w jaki programista wdrożył okno dialogowe. W Safari, Textmate i Terminalu wszystkie okna dialogowe, które próbowałem, były do ​​wyboru. Próbowałem wyświetlić okno dialogowe Transmit, a jego tekstu nie można wybrać.
badams
Zgoda. Wszystko zależy od pudełka. Niektóre pola tekstowe mogę wybrać, niektóre nie mogę. Najlepiej jest zrobić zrzut ekranu okna dialogowego.
daviesgeek

Odpowiedzi:

6

Najbardziej ogólnym sposobem może być użycie Inspektora dostępności i skopiowanie tekstu z jego okna.

W systemie Mac OS X 10.4 i nowszych Apple udostępnia narzędzie testujące Inspektora dostępności ...

Inspektor dostępności przedstawia okno narzędzia, które wyświetla atrybuty (i wartości), akcje i pozycję w hierarchii dostępności obiektu znajdującego się obecnie pod wskaźnikiem myszy. Aby skorzystać z Inspektora dostępności, należy włączyć aplikacje wspomagające w Preferencjach dostępu uniwersalnego.

Ikona Inspektora dostępności

Oto przykład Trim Enabler, w którym nie można wybrać i skopiować tekstu karty „Informacje”:

Trim Enabler - zakładka About

I okno wyświetlane przez Inspektora dostępności:

Przykład Inspektora dostępności

Dzieje się tak, gdy wskaźnik myszy unosi się nad długim tekstem, który można następnie znaleźć w AXValue.

Edytuj 18.10.2014:

Następny przykład pokazuje krok po kroku, jak skopiować tekst, którego nie można wybrać za pomocą Inspektora dostępności 4.0:

Otwórz okno, z którego mają zostać wyodrębnione informacje i otwórz Inspektora dostępności, a następnie najedź wskaźnikiem myszy na interesujący element:

copy_text_with_Accessibility_Inspector

Naciśnij Command ⌘+, 7aby zablokować Inspektora dostępności, a następnie kliknij linię, którą chcesz skopiować (np. AXValue) i naciśnij Command ⌘+, Caby skopiować ją do schowka:

lock_Accessibility_Inspector_and_select_AXValue

W razie potrzeby wklej skopiowany tekst:

wklejony tekst

iolsmit
źródło
Próbowałem to zrobić za pomocą Inspektora dostępu, ale nie mogłem uzyskać tekstu. Czy potrafisz wyjaśnić kroki?
Metal Gear
1
@MetalGear -> Dodałem kolejny przykład, który pokazuje krok po kroku, jak skopiować pożądany tekst za pomocą Inspektora dostępności 4.0
iolsmit,
1

Ogólny przypadek polega na tym, że programista musi udostępnić ten tekst w oknie dialogowym na podstawie okna dialogowego, więc nie można łatwo po prostu skopiować tekstu, chyba że program zamierza mieć tę funkcję.

To, co możesz zrobić, ale wydaje się, że wymaga więcej pracy, niż jest warte, to umożliwić uniwersalny dostęp, w którym tekst może zostać wysłany do zewnętrznego urządzenia, takiego jak monitor Braille'a lub inne urządzenie specjalnego przeznaczenia, i jakoś uchwycone.

Możesz także spróbować złamać ten program i zmodyfikować wywołanie okna dialogowego, aby zmienić rzeczy, tak aby zawsze można je było wybrać. To może stanowić lepsze pytanie po stronie programowania.

Wykonałeś praktyczną rzecz - zrób migawkę i miej nadzieję, że wiadomość zostanie zapisana w innym miejscu do pliku tekstowego. Odsyłacz do tego pytania może być dobrym sposobem, aby zapytać twórcę programów, w których potrzebujesz tej umiejętności modyfikacji praktyki kodowania, takiej jak Safari, Terminal i inne programy wspomniane w komentarzach powyżej.

bmike
źródło
0

Możesz także uruchomić taki skrypt w AppleScript Editor:

tell application "System Events"
    value of UI elements of windows of process "Application Name"
end tell

Jeśli nie widzisz tekstu w wynikach, spróbuj dodać jedną lub więcej UI elements ofczęści później value of.

Lri
źródło