Hello Why on OS X 10.5 i can't execute AXObserverAddNotification() from an agent, while it works great being called from a process started using a Terminal? (On OX X 10.6 it works great no matter how i am starting my process - whether it's an agent or a "normal" app)? How could i make it work on Mac OS Leopard as agent as well? I have written a simple application that illustrates the problem i'd run into (below), because no one answered to a "dry theoretical question" i asked few times before :) Here is a code, that reproduces the problem: (the function "pid_t find_process(char *process_name)" returns PID of a process by its name, a file "process.c", contains the implementation of it, you can find it here: http://pastebin.com/b7sUbG4m ) ------------------------------file: main.c------------------------------ #include <stdio.h> #include <CoreFoundation/CoreFoundation.h> #include <ApplicationServices/ApplicationServices.h> pid_t find_process(char *process_name); void mycallback(AXObserverRef observer, AXUIElementRef element, CFStringRef notification, void *refcon) { printf("Word Application has been activated!\n"); } int main (int argc, const char * argv[]) { pid_t appPid = find_process("Microsoft Word"); if(appPid==0) { printf("process doesn't exist"); return 1; } AXObserverRef observer; AXError err; err = AXObserverCreate(appPid, mycallback, &observer); if(err!= kAXErrorSuccess) { printf("AXObserverCreate error: %i\n", err); return 1; } AXUIElementRef appElement = AXUIElementCreateApplication(appPid); if(appElement==NULL) { printf("AXUIElementCreateApplication error, returned 0"); } err = AXObserverAddNotification(observer, appElement, kAXApplicationActivatedNotification, NULL); if(err!= kAXErrorSuccess) { printf("AXObserverAddNotification error: %i\n", err); return 1; } CFRunLoopAddSource(CFRunLoopGetCurrent(), AXObserverGetRunLoopSource(observer), kCFRunLoopCommonModes); CFRunLoopRun(); //run runloop indefinitely return 0; } ------------------------------end------------------------------ if you compile that (having added frameworks CoreFoundation and ApplicationServices to the project) and launch it from a terminal, everytime you activate Microsoft Word application, you will get a text "Word Application has been activated" in a terminal window now, if you create a textfile com.test.accessibility.agent.plist, with the following content: ------------------------------com.test.accessibility.agent.plist------------------------------ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd > <plist version="1.0"> <dict> <key>Label</key> <string>com.test.accessibility.agent</string> <key>Program</key> <string>[HERE SPECIFY AN ABSOLUTE PATH TO THE EXECUTABLE]</string> <key>KeepAlive</key> <true/> </dict> </plist> ---------------------------------------------end------------------------------ and then, execute the command from a terminal to install and launch the agent % launchctl load com.test.accessibility.agent.plist % launchctl start com.test.accessibility.agent in system Console (/Applications/Utilities/Console.app) you will see the following output -----------------output in console--------------- com.test.accessibility.agent[1796] AXObserverAddNotification error: -25204 com.apple.launchd[84] (com.test.accessibility.agent[1799]) Exited with exit code: 1 com.apple.launchd[84] (com.test.accessibility.agent) Throttling respawn: Will start in 10 seconds ---------------end--------------- repeating every 10 secs, because of autorelaunch enabled for this agent in plist (don't forget to "%launchctl remove com.test.accessibility.agent" to stop it and delete its plist entry in the end) What causes that? Can i somehow make it work on Mac OS 10.5 as an agent? As i have mnentioned, on OS X 10.6 this is "fixed" (or, rather, changed). Maybe my process, being started by launchd, doesn't have sufficient rights to call this AXObserverAddNotification() function? How can i increase these privileges, and to what level should i increase them? Unfortunately this document http://developer.apple.com/library/mac/#documentation/Accessibility/Referenc... doesn't give any information Thank you George