Page 1 of 2
How many time my application is run in memory (SOLVED)
Posted: Fri May 13, 2022 8:39 pm
by Horizon
Hi,
I want to find out How many time my application is run in memory.
Can anyone help me where to start?
Thanks.
Re: How many time my application is run in memory
Posted: Fri May 13, 2022 9:10 pm
by rhlawek
Do you mean how long one of your programs has been running?
From powershell:
New-TimeSpan -Start (get-process <yourapplication>).StartTime
Internal to the program? I would just set a variable with DateTime() on entry, then diff that with current DateTime() to get total runtime of the app.
Re: How many time my application is run in memory
Posted: Fri May 13, 2022 9:18 pm
by rhlawek
And I just realized I may have misinterpreted the question. Are you asking how many instances of your application are in memory? (and not how long it's been running as I commented about.)
This can also still be done easily with powershell, though I'd need to look that up.
Re: How many time my application is run in memory
Posted: Fri May 13, 2022 9:19 pm
by rhlawek
(Get-Process | Where-Object {$_.Name -eq 'YourApp'}).count
Re: How many time my application is run in memory
Posted: Sat May 14, 2022 7:04 pm
by Horizon
rhlawek wrote:And I just realized I may have misinterpreted the question. Are you asking how many instances of your application are in memory? (and not how long it's been running as I commented about.)
This can also still be done easily with powershell, though I'd need to look that up.
Yes this is.
Re: How many time my application is run in memory
Posted: Sat May 14, 2022 7:07 pm
by Horizon
rhlawek wrote:(Get-Process | Where-Object {$_.Name -eq 'YourApp'}).count
As far as I know, in order to run powershell, firstly, we should install it. I could not install it to customer computer. I need something different.
Thank you.
Re: How many time my application is run in memory
Posted: Sat May 14, 2022 8:11 pm
by Antonio Linares
Dear Hakan,
Do you mean that you want to allow just one single execution of your app ?
Re: How many time my application is run in memory
Posted: Sat May 14, 2022 8:47 pm
by Horizon
Antonio Linares wrote:Dear Hakan,
Do you mean that you want to allow just one single execution of your app ?
Hi Antonio,
This is not my purpose. My application can run more than once instances.
I want to copy my app exe from server by using batch file at ConvertW32.exe.
Code: Select all | Expand
cRelauFle := cFilePath(GetModuleFileName( GetInstance() ))+'\Relaunch.Bat'
hFile := FCreate( cRelauFle, 0 ) // 0 Normal/Default,Read/Write
if hFile >= 0
FWrite( hFile, "COPY "+::cRoot+"Convert32.exe "+cFilePath(GetModuleFileName( GetInstance() ))+"\Convert32.exe /Y" +CRLF )
FWrite( hFile, GetModuleFileName( GetInstance() ) +CRLF )
FWrite( hFile, "exit" +CRLF )
FClose( hFile )
SysRefresh()
*--
WinExec( cRelauFle, 0 ) // 0 not show Cmd.exe Window, 1 yes
ENDIF
QUIT
for example, my customer runs two instance of my application. in this situation, I release a new version on server. My customer exit one program and run my application again (or run a new instance of my app), the new version found message comes.
I want to find out how many instance of my app. run in memory at this computer. if more than one, I will warn my customer to exit other instances or I will force to close other instances.
Thats my purpose.
Using FindWindow() function find the first instance hWnd.
Re: How many time my application is run in memory
Posted: Sat May 14, 2022 9:20 pm
by Antonio Linares
Re: How many time my application is run in memory
Posted: Sun May 15, 2022 5:47 am
by Natter
As a rule, the class name of the main window is TWindow (you can make a unique name) And using Enum() to determine the number of running instances of the task
Re: How many time my application is run in memory
Posted: Sun May 15, 2022 6:26 am
by Jimmy
hi,
when run same App "more" than once it will use same "Name" in each Instance
Code: Select all | Expand
IF HowManyApp("Notepad.exe") > 1
MsgInfo("more that 1 Instance running ! ")
Code: Select all | Expand
FUNCTION HowManyApp(cApp)
LOCAL oProcesses, oProcess, oWMI, oLocator
LOCAL nRet := 0
oLocator := CreateObject( "wbemScripting.SwbemLocator" )
IF EMPTY( oLocator )
msginfo( "can not create wbemScripting.SwbemLocator" )
RETURN 0
ELSE
oWMI := oLocator:ConnectServer()
ENDIF
IF EMPTY( oWMI )
msginfo( "can not connect oLocator:ConnectServer()" )
RETURN 0
ELSE
oProcesses = oWMI:ExecQuery( "SELECT * FROM Win32_Process" )
IF oProcesses:Count > 0
FOR EACH oProcess in oProcesses
IF UPPER( TRIM( oProcess:Name ) ) = UPPER( TRIM( cApp ) )
nRet += 1
ENDIF
NEXT
ENDIF
ENDIF
oProcesses := NIL
oWMI := NIL
oLocator := NIL
RETURN nRet
Re: How many time my application is run in memory
Posted: Sun May 15, 2022 7:58 am
by Antonio Linares
many thanks Jimmy!

Re: How many time my application is run in memory (SOLVED)
Posted: Sun May 15, 2022 10:06 am
by Horizon
Jimmy wrote:hi,
when run same App "more" than once it will use same "Name" in each Instance
Code: Select all | Expand
IF HowManyApp("Notepad.exe") > 1
MsgInfo("more that 1 Instance running ! ")
Code: Select all | Expand
FUNCTION HowManyApp(cApp)
LOCAL oProcesses, oProcess, oWMI, oLocator
LOCAL nRet := 0
oLocator := CreateObject( "wbemScripting.SwbemLocator" )
IF EMPTY( oLocator )
msginfo( "can not create wbemScripting.SwbemLocator" )
RETURN 0
ELSE
oWMI := oLocator:ConnectServer()
ENDIF
IF EMPTY( oWMI )
msginfo( "can not connect oLocator:ConnectServer()" )
RETURN 0
ELSE
oProcesses = oWMI:ExecQuery( "SELECT * FROM Win32_Process" )
IF oProcesses:Count > 0
FOR EACH oProcess in oProcesses
IF UPPER( TRIM( oProcess:Name ) ) = UPPER( TRIM( cApp ) )
nRet += 1
ENDIF
NEXT
ENDIF
ENDIF
oProcesses := NIL
oWMI := NIL
oLocator := NIL
RETURN nRet
Thank you very much Jimmy. It works very well.
Re: How many time my application is run in memory
Posted: Sun May 15, 2022 10:41 am
by Horizon
Jimmy wrote:hi,
when run same App "more" than once it will use same "Name" in each Instance
Code: Select all | Expand
IF HowManyApp("Notepad.exe") > 1
MsgInfo("more that 1 Instance running ! ")
Code: Select all | Expand
FUNCTION HowManyApp(cApp)
LOCAL oProcesses, oProcess, oWMI, oLocator
LOCAL nRet := 0
oLocator := CreateObject( "wbemScripting.SwbemLocator" )
IF EMPTY( oLocator )
msginfo( "can not create wbemScripting.SwbemLocator" )
RETURN 0
ELSE
oWMI := oLocator:ConnectServer()
ENDIF
IF EMPTY( oWMI )
msginfo( "can not connect oLocator:ConnectServer()" )
RETURN 0
ELSE
oProcesses = oWMI:ExecQuery( "SELECT * FROM Win32_Process" )
IF oProcesses:Count > 0
FOR EACH oProcess in oProcesses
IF UPPER( TRIM( oProcess:Name ) ) = UPPER( TRIM( cApp ) )
nRet += 1
ENDIF
NEXT
ENDIF
ENDIF
oProcesses := NIL
oWMI := NIL
oLocator := NIL
RETURN nRet
Hi Jimmy,
Is it possible to read Open Files in Shared folders via WMI?. (My Computer, Manage, System Tools, Shared folder, Open Files)
Thanks in advance.
Re: How many time my application is run in memory (SOLVED)
Posted: Tue May 17, 2022 9:05 am
by MarcoBoschi