Trevor, Those directions were awesome! I saw the security warning with the AppleScript method. Your extension method avoided it. Thank you.
— Scott Morrow Elementary Software (Now with 20% less chalk dust!) web https://elementarysoftware.com/ email sc...@elementarysoftware.com booth 1-800-615-0867 ------------------------------------------------------ > On Nov 23, 2019, at 6:06 AM, Trevor DeVore via use-livecode > <use-livecode@lists.runrev.com> wrote: > > On Sat, Nov 23, 2019 at 6:24 AM Klaus major-k via use-livecode < > use-livecode@lists.runrev.com> wrote: > >> Hi friends, >> >> can we check if our standalone is currently active, means in >> the "foreground" or if it is not active? Know what I mean? >> If yes, how can we do that? LC? AppleScript? >> >> I want to alert the user if the app is active, but not if the app >> is not active. >> > > Apple provides API calls to do this and wrapping Objective-C APIs is pretty > straightforward. The APIs you are interested in: > > Get frontmost app: > https://developer.apple.com/documentation/appkit/nsworkspace/1532097-frontmostapplication?language=objc > > Get bundle identifier of frontmost app: > https://developer.apple.com/documentation/appkit/nsrunningapplication/1529140-bundleidentifier?language=objc > > I have a macOS LCB "playground" repo where I test a number of things out > and upload them for others to see. Take a look at > the NSWorkspaceGetFrontmostApplication function: > > https://github.com/trevordevore/lc-macos-toolset/blob/master/NSWorkspace/nsworkspace.lcb#L133 > > You can call it like this: > > ``` > put NSWorkspaceGetFrontmostApplication("bundle id") > ``` > > If I run the function from within LiveCode it returns "com.runrev.livecode". > > If I run the following in the message box and switch to Chrome it returns > "com.google.Chrome": > > ``` > wait 1 second;put NSWorkspaceGetFrontmostApplication("bundle id") > ``` > > So I would think it would do what you want. You would, however, need to > compile the nsworkspace.lcb and load the resulting extension in your app. > Here are some quick instructions in case you want to try: > > 1. Download and unzip repo using "Clone or Download" link found at > https://github.com/trevordevore/lc-macos-toolset > 2. Launch LC 9 and open the Extension Builder (EB) from Tools > Extension > Builder menu. > 3. Click on the folder icon in top right of EB window and select the > ./NSWorkspace/nsworkspace.lcb file. > 4. Click on play button in bottom left of EB window. > 5. Test `wait 1 second;put NSWorkspaceGetFrontmostApplication("bundle id")` > in the message box. It should return a value. > 6. Look in the ./NSWorkspace folder for the module.2.lcm file. This is the > file that can be renamed, added to your application folder, and loaded > using `load extension`. > > Regarding step 6 - If you don't want to store your extension externally to > your application you can also use the "+" button in the EB to install the > extension in your LC environment. Now the extension will load whenever you > launch LC and you can select "NSWorkspace" in the Standalone Builder > Inclusions tab so that the extension is bundled with your executable. > > -- > Trevor DeVore > ScreenSteps > www.screensteps.com > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode