Live monitoring of user file processes
Moderators: FourthWorld, heatherlaine, Klaus, kevinmiller, robinmiller
-
- Posts: 720
- Joined: Thu Sep 11, 2014 1:49 pm
- Location: The Netherlands
Live monitoring of user file processes
Is there any way in livecode to monitor file related processes from a user (in Windows but if possible also other platforms).
I would like to write an application (service) based upon the following occuring processes at a user.
- File Create
- File Open
- File Change
- File Close
- File Remove
Kind regards,
Paul
(Developer ELMNTRE)
I would like to write an application (service) based upon the following occuring processes at a user.
- File Create
- File Open
- File Change
- File Close
- File Remove
Kind regards,
Paul
(Developer ELMNTRE)
-
- VIP Livecode Opensource Backer
- Posts: 3901
- Joined: Sat Mar 24, 2007 2:54 am
- Location: Palo Alto
Re: Live monitoring of user file processes
Hi Paul,
Checkout the "files" (detailed) function in the dictionary.
File Remove would be the one you have to code most for.
Simon
Checkout the "files" (detailed) function in the dictionary.
File Remove would be the one you have to code most for.
Simon
I used to be a newbie but then I learned how to spell teh correctly and now I'm a noob!
-
- Posts: 720
- Joined: Thu Sep 11, 2014 1:49 pm
- Location: The Netherlands
Re: Live monitoring of user file processes
Hi Simon,
Thanks for the reply and suggestion however I cannot find a command or solution in the "files" function in the dictionary which I can use for my purpose.
To clarify: I want to build a service that monitors in Windows when a user opens a file, closes a file, changes a file or removes/moves a file. Those files can be opened by other (non LiveCode) applications like word or excel or any other application. As soon as one of those events occurs I want to use this trigger within my application (running as a service in the users OS).
Maybe I did not look at the correct place or information, if not please let me know.
Kind regards,
Paul
Thanks for the reply and suggestion however I cannot find a command or solution in the "files" function in the dictionary which I can use for my purpose.
To clarify: I want to build a service that monitors in Windows when a user opens a file, closes a file, changes a file or removes/moves a file. Those files can be opened by other (non LiveCode) applications like word or excel or any other application. As soon as one of those events occurs I want to use this trigger within my application (running as a service in the users OS).
Maybe I did not look at the correct place or information, if not please let me know.
Kind regards,
Paul
-
- VIP Livecode Opensource Backer
- Posts: 858
- Joined: Wed Jun 24, 2009 1:17 pm
- Location: Plymouth, UK
- Contact:
Re: Live monitoring of user file processes
I think Simon means that the 'files' function gets you the file names (and the 'detailed files' gets you - you guessed it - lots of detailed information about the files in a particular folder).
Once you know how to get that information you could run a simple timed comparison to see if something changes (or have I misunderstood you?):
Once you know how to get that information you could run a simple timed comparison to see if something changes (or have I misunderstood you?):
Code: Select all
local sFileList
on mouseUp
--first set up which directory to monitor
--secondly get an initial list of files in it
--and thirdly, start running comparisons
answer folder "Select a folder to monitor"
if it is empty then exit mouseUp
set the directory to it
put the files into sFileList
send checkFiles to me in 2 secs
end mouseUp
on checkFiles
if the files is not sFileList then
--here you can have code that compares 'the files' with sFileList
--line-by-line to find out which file has changed - you can then
--do whatever it is you want to do with this information...
answer "Something has changed!"
put the files into sFileList
end if
send checkFiles to me in 2 secs
end checkFiles
"...this is not the code you are looking for..."
-
- VIP Livecode Opensource Backer
- Posts: 3901
- Joined: Sat Mar 24, 2007 2:54 am
- Location: Palo Alto
Re: Live monitoring of user file processes
Hi Paul,
Here is the link to the "files" function in the API
https://livecode.com/resources/api/#liv ... ript/files
And here is a little lesson
http://lessons.runrev.com/m/4071/l/1663 ... ers-part-1
For Remove you'll have to store the filenames in a DB or simple text file. I guess you'd want a DB anyways so you'd just stick all the "detailed files" information in there.
Simon
Here is the link to the "files" function in the API
https://livecode.com/resources/api/#liv ... ript/files
And here is a little lesson
http://lessons.runrev.com/m/4071/l/1663 ... ers-part-1
For Remove you'll have to store the filenames in a DB or simple text file. I guess you'd want a DB anyways so you'd just stick all the "detailed files" information in there.
Simon
I used to be a newbie but then I learned how to spell teh correctly and now I'm a noob!
-
- Posts: 720
- Joined: Thu Sep 11, 2014 1:49 pm
- Location: The Netherlands
Re: Live monitoring of user file processes
Hi Dave and Simon,
Thanks for you help , however I do not think the files option would work for the business application I want to build. Mainly because there can be 100's to 1000's of files in the many folders a business user is able to access with his or her permissions. Scanning all these folders every x seconds would be too memory and processor intensive to do and probably also to slow.
I at least need to be able to see in the the users active memory which files the user has open. If I am able to do that than I can check for those files with the files functions in livecode and do anything I need.
For example SysInternals tool (now from Microsoft) is able to do this.
( https://technet.microsoft.com/en-us/sys ... 96653.aspx )
( https://technet.microsoft.com/en-us/sys ... s/bb896645 download url)
And thanks for the code sample .
Regards,
Paul
Thanks for you help , however I do not think the files option would work for the business application I want to build. Mainly because there can be 100's to 1000's of files in the many folders a business user is able to access with his or her permissions. Scanning all these folders every x seconds would be too memory and processor intensive to do and probably also to slow.
I at least need to be able to see in the the users active memory which files the user has open. If I am able to do that than I can check for those files with the files functions in livecode and do anything I need.
For example SysInternals tool (now from Microsoft) is able to do this.
( https://technet.microsoft.com/en-us/sys ... 96653.aspx )
( https://technet.microsoft.com/en-us/sys ... s/bb896645 download url)
And thanks for the code sample .
Regards,
Paul
Re: Live monitoring of user file processes
Hi Paul,
I'm afraid what you want cannot be done with the build-in means of Livecode.
You will need an external that digs into the innards of the target OS!
Best
Klaus
I'm afraid what you want cannot be done with the build-in means of Livecode.
You will need an external that digs into the innards of the target OS!
Best
Klaus
-
- VIP Livecode Opensource Backer
- Posts: 9823
- Joined: Sat Apr 08, 2006 7:05 am
- Location: Los Angeles
- Contact:
Re: Live monitoring of user file processes
Hello Paul -
Klaus is right: currently LiveCode provides no direct support for those specific APIs, so while they would be super-cool for making file-syncing and other tools we'd have to write an external that uses those APIs to get that functionality in LC 7 and earlier.
With LiveCode v8, however, there's a new language being developed for making those types of extensions without having to use C++, LiveCode Builder. In addition to providing many new slightly lower-level options for making GUI Widgets, it provides access to native OS APIs, so you could write a library in LiveCode Builder to handle that for v8, and likely more simply than would be required to do that in C++ using the externals API.
Klaus is right: currently LiveCode provides no direct support for those specific APIs, so while they would be super-cool for making file-syncing and other tools we'd have to write an external that uses those APIs to get that functionality in LC 7 and earlier.
With LiveCode v8, however, there's a new language being developed for making those types of extensions without having to use C++, LiveCode Builder. In addition to providing many new slightly lower-level options for making GUI Widgets, it provides access to native OS APIs, so you could write a library in LiveCode Builder to handle that for v8, and likely more simply than would be required to do that in C++ using the externals API.
Richard Gaskin
LiveCode development, training, and consulting services: Fourth World Systems
LiveCode Group on Facebook
LiveCode Group on LinkedIn
LiveCode development, training, and consulting services: Fourth World Systems
LiveCode Group on Facebook
LiveCode Group on LinkedIn
-
- Posts: 720
- Joined: Thu Sep 11, 2014 1:49 pm
- Location: The Netherlands
Re: Live monitoring of user file processes
Thanks for your clear replies to my question and I have got my answer.
I will be waiting for LC8 to arrive and then dive into this matter.
Thanks again.....
Kind regards,
Paul
I will be waiting for LC8 to arrive and then dive into this matter.
Thanks again.....
Kind regards,
Paul
-
- VIP Livecode Opensource Backer
- Posts: 3901
- Joined: Sat Mar 24, 2007 2:54 am
- Location: Palo Alto
Re: Live monitoring of user file processes
WOW!
Things I can do just by trying.
Simon
Edit; but easy put shell("tasklist -v")
Code: Select all
on mouseUp
put shell("powershell.exe get-process")
end mouseUp
Simon
Edit; but easy put shell("tasklist -v")
I used to be a newbie but then I learned how to spell teh correctly and now I'm a noob!
-
- Posts: 720
- Joined: Thu Sep 11, 2014 1:49 pm
- Location: The Netherlands
Re: Live monitoring of user file processes
Excellent idea. This might work
I will dive into this to see what I can achieve with power shell commands and the tasklist.
Thanks ....!
I will dive into this to see what I can achieve with power shell commands and the tasklist.
Thanks ....!
-
- Posts: 720
- Joined: Thu Sep 11, 2014 1:49 pm
- Location: The Netherlands
Re: Live monitoring of user file processes
Based upon Simons idea and some tests I found a way to get user processes in detail.
The problem was that if an application (e.g. word) has more than one document open I could not see that with tasklist command.
I tried handle.exe from sysinternals (now from Microsoft).
Downloadable at: https://technet.microsoft.com/en-us/sys ... 96655.aspx
For test I placed the executable in the root
With this executable I am able to get the information I need.
Now I need to find the fastest way to filter the documents (e.g. ending with docx) and get the path-name into a variable.
Because sysinternals has more tools like this this might open some interesting possibilities for some.
So this is a good start.
Thanks.
The problem was that if an application (e.g. word) has more than one document open I could not see that with tasklist command.
I tried handle.exe from sysinternals (now from Microsoft).
Downloadable at: https://technet.microsoft.com/en-us/sys ... 96655.aspx
For test I placed the executable in the root
With this executable I am able to get the information I need.
Code: Select all
on mouseUp
put "C:\handle.exe -p winword.exe" into commandstring
put shell(commandstring)
end mouseUp
Because sysinternals has more tools like this this might open some interesting possibilities for some.
So this is a good start.
Thanks.
Last edited by mrcoollion on Mon Aug 17, 2015 3:37 pm, edited 1 time in total.
-
- VIP Livecode Opensource Backer
- Posts: 9823
- Joined: Sat Apr 08, 2006 7:05 am
- Location: Los Angeles
- Contact:
Re: Live monitoring of user file processes
Kudos to Simon for suggesting PowerShell. I so seldom use Windows I forget they now ship it with a usable scripting language. Good call - I should spend more time with it myself.
Richard Gaskin
LiveCode development, training, and consulting services: Fourth World Systems
LiveCode Group on Facebook
LiveCode Group on LinkedIn
LiveCode development, training, and consulting services: Fourth World Systems
LiveCode Group on Facebook
LiveCode Group on LinkedIn