开发者

Get a list of opened windows cocoa

开发者 https://www.devze.com 2022-12-18 05:42 出处:网络
I\'m new to Cocoa and I want to know how I can get a list of all open windows. I\'m not talking about running programs, since this would be an easy task. I want to list windows, for example, if I have

I'm new to Cocoa and I want to know how I can get a list of all open windows. I'm not talking about running programs, since this would be an easy task. I want to list windows, for example, if I have Preview running with 10 pdf opened, my program should be able to retrieve a list with all those pdf. I also want to know if there's some API available to interact with already open windows (and maybe move them or do something else) from an external appl开发者_如何学运维ication. Thank you.


First, Cocoa is not an acronym, so it's not "COCOA". :-)

Second, your only (public API) option is the Accessibility API. You'll have to enable access for assistive devices in the Accessibility panel in Systems Preferences.

Take a look at the docs to get started: Accessibilty Overview


You can use CGWindowListCopyWindowInfo to retrieve a list of windows in the current user session.

It's a Carbon function, though - not Cocoa - but perfectly callable from a Cocoa app and documented here: Quartz Window Services Reference : CGWindowListCopyWindowInfo().


I have Preview running with 10 pdf opened, my program should be able to retrieve a list with all those pdf.

Well, that's the hard part. You can get the windows via Accessibility, but Accessibility doesn't associate them with any kind of document object.

AppleScript would work for some applications, but Preview isn't one of them. Indeed, most apps aren't.

So, you can get a list of windows easily enough, but getting meaningful information about or from inside those windows ranges from tricky to impossible. Your best bet may be a combination of Accessibility, AppleScript, and bug reports for un-scriptable applications, and the knowledge that your app will not work on everything.


if you need WIndow List or UI Specific of window control, if its UI Specific control ,you can refer Apple son of Grab example,
It displays Windows List running on the desktop, probably you can trim down as par your needs.

0

精彩评论

暂无评论...
验证码 换一张
取 消