Get a list of non-livecode windows

Anything beyond the basics in using the LiveCode language. Share your handlers, functions and magic here.

Moderators: FourthWorld, heatherlaine, Klaus, kevinmiller, robinmiller

Post Reply
CenturyMan1979
Posts: 86
Joined: Tue May 15, 2012 5:56 pm

Get a list of non-livecode windows

Post by CenturyMan1979 » Thu Jun 06, 2013 2:31 am

Hey Everyone,

Is it possible to get a list of all windows that are open on a users computer? Reason for this is I want to auto update my application but can't overwrite the application while it is still open. So I create a second executable called update_installer. So when the user selects they want to update the application I launch update_installer and close the main application. First thing I want to do in the update_installer app is check if the main application is still open and wait till it has been closed. Problem is that I can't seem to figure out if the window is open because I don't know how to access a list of all open windows.

Other thing is I need the solution to work on PC and MAC.

Any help would be great.

doc
Posts: 148
Joined: Fri Jun 09, 2006 4:30 pm

Re: Get a list of non-livecode windows

Post by doc » Thu Jun 06, 2013 3:14 am

Howdy CenturyMan!
Have a look at this forum thread... I think it might point you in the right general direction:
http://forums.runrev.com/viewtopic.php?f=7&t=13348

Regards,
Doc

CenturyMan1979
Posts: 86
Joined: Tue May 15, 2012 5:56 pm

Re: Get a list of non-livecode windows

Post by CenturyMan1979 » Thu Jun 06, 2013 3:41 pm

That is exactly what I was looking for. I did have to modify the code for the windows side since it would not display the whole service name for services that had a space in the name.

Here is the updated code,

Code: Select all

function programs
   if the platform is "MacOS" then -- only OSX!
      put shell("ps -xcw") into myList
      put offset("COMMAND",myList) into myColPos
      repeat for each line myLine in myList
         put char myColPos to -1 of myLine & cr after myNewList
      end repeat
      filter myNewList without "(*"
      return line 2 to -1 of myNewList
   else if the platform is "Win32" then
      put line 4 to -1 of shell("tasklist /FO CSV") into myList
      set the itemDelimiter to ","
      repeat for each line myLine in myList
         put char 2 to -2 of item 1 of myLine & cr after myNewList
      end repeat
      return line 1 to -2 of myNewList
   else
      return empty
   end if
end programs

Post Reply