I would like to get the application icon for all foreground applications running on my Mac. I'm already iterating over all applications using the Process Manager API. I have determined that any process that does not h开发者_如何转开发ave the modeBackgroundOnly
flag set in the processMode
(as retrieved from GetProcessInformation()
) is a "foreground" application, and shows up in the task switcher window.
All I need is an API that gives me a CImageRef (or similar) that contains the application icon for a process. I'm free to use either carbon or cocoa APIs.
On Mac OS X 10.6 or later, you can ask a running application for its icon.
On earlier versions of Mac OS X, you'll have to get it by looking at the application's bundle. Pass the PSN to the GetProcessBundleLocation
function to get the bundle's location as an FSRef
, then pass that to the GetIconRefFromFileInfo
function.
You can use the LaunchServices functions (Carbon) or the NSWorkspace class (Cocoa).
精彩评论