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
8)