2010-11-25 4 views
0

나는 (C 언어로 선호하는) 프로그램을 만들고 싶지만 코코아에서도 iTunes 나 adium 같은 외부 프로그램에서 데이터를 가져올 수 있습니다. 그들을 사용할 것이다. 예를 들어, 목록 상자의 데이터 나 채팅 텍스트를 조작하여 조작하고 싶습니다. 나는 시작할 곳이 필요해. 창문에서 나는 hWnd를 발견하고 목록 상자 또는 텍스트 상자에 대한 포인터를 찾는 API를 사용하는 것이 가능하다고 생각한다. 시작하는 방법에 대한 정보를주세요. 미리 감사드립니다.Mac OSx에서 외부 프로그램의 데이터를 처리하는 방법

답변

1

정확히 무엇을하고 싶은지 확실하지 않습니다. 불가능하거나 심각하게 제한됩니다.

다른 응용 프로그램에서는 "목록 상자"를 구성하는 여러 가지 방법을 사용합니다. - 코코아 응용 프로그램은 NSTableView를 사용하고 Carbon 응용 프로그램은 DataBrowser를 사용하고 GTK, Qt 및 Java 응용 프로그램은 더욱 다양한 API를 사용합니다. 이것들은 모든 일반적인 종류의 목록 상자를 통과하지는 않습니다. 각각은 독립적 인 구현입니다.

는 (당신은 희망 NSTableView는 또는 DataBrowser 중 하나가 다른 기반으로 할 것이지만,에 포함되지 않습니다. 수), 그 제어에 대한 포인터를 얻을 수 없다 서로에 대한

입니다. 응용 프로그램이 고의적으로 제공하는 경우가 아니면 (다른 NSTableView에서만 작동 함) 다른 응용 프로그램의 NSTableView 또는 DataBrowser보기 나 GTK/Qt/Java에 액세스 할 수 없습니다. 그것은 당신의 상황 인 것 같지 않습니다.

가장 가까운 접근성은 접근 가능성입니다.이 접근법은 매우 비슷하지만 Cocoa 기반이 아닌 대부분의 응용 프로그램에서는 작동하지 않을 수 있습니다.

그럼에도 불구하고보기가 모든 데이터를 표시하지 않을 수 있습니다. 테이블 뷰가 지연되어 채워질 수 있으며 iOS UITableView를 모방하여 설계된 테이블 뷰도 이 아닐 수도 있습니다.에는 모든 데이터가 있습니다 (표시 할 수있는 데이터 만 있기 때문에).

(위의 모든 뷰의 모든 종류에 적용뿐만 아니라 테이블 뷰. 컬렉션 뷰, 텍스트 필드 모두를위한, 버튼-같은 거래.)

유일한 방법은 진정한에서 얻을 수 있습니다, 데이터의 완전한 사본은 그것을 소유 한 컨트롤러에게 질문하는 것입니다. 또한 응용 프로그램이 특별히 제공하지 않으면 불가능합니다. 말할 것도없이, 애플리케이션은 컨트롤러 (MVC가 아닌 객체 지향이 아니라 단순히 슬프게 만들어 짐)가 없다.

... 조작하기 위해.

데이터를 가장 먼저 얻는 것은 쉬운 부분입니다. 정당한 이유로 다른 응용 프로그램에서 데이터를 엉망으로 처리하는 것은 거의 불가능합니다.

이러한 목표 중 가장 가까운 곳은 접근성 인터페이스입니다.

+0

답장을 보내 주셔서 감사합니다. 그것은 매우 도움이되었습니다. OCR 만 할 수 있어요? (나는 그것이 정말로 힘들다는 것을 알고있다). 나는 당신이 adium 개발자 중 하나라는 것을 알고 있습니다. 예를 들어 adium을 봅시다. 온라인 연락처의 이름을 배열에 저장하는 유일한 방법은 문자 인식입니까? 예를 들어 포커 소프트웨어 트래커가 게임의 데이터를 어떻게 마이닝합니까? –

+0

btw 축하해. 아디 움과 으르렁 거리는 소리에 아주 좋은 작품을 축하해. 그들은 내가 그의 맥에 설치할 누군가를 제안하는 처음 두 가지입니다 :-) –

+0

OCR은 훨씬 덜 신뢰할 수 있습니다. 우선, OCR은 어쨌든 어렵습니다.다른 경우에는보기에서 완전히 볼 수있는 텍스트 (잘린 부분이나 화면에 표시되지만 화면에 표시되지 않는 것 (예 : 사용자가 스크롤 한 것보다 아래로 또는 위로 움직이는 것)에서만 작동합니다. 눈에 보이지 않게. 나는 포커 소프트웨어 트래커에 대해 전혀 모른다. Adium의 경우 AppleScript를 통해 연락처 목록에 대해 질문 할 수 있습니다. 일반적으로 응용 프로그램의 경우 액세스 가능성이 가장 가까운 사용자입니다. Adium과 Growl의 모든 개발자를 대신하여 감사드립니다. –

관련 문제