FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour How many time my application is run in memory (SOLVED)
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
How many time my application is run in memory (SOLVED)
Posted: Fri May 13, 2022 08:39 PM

Hi,

I want to find out How many time my application is run in memory.

Can anyone help me where to start?

Thanks.

Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 195
Joined: Sun Jul 22, 2012 07:01 PM
Re: How many time my application is run in memory
Posted: Fri May 13, 2022 09:10 PM

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.

Posts: 195
Joined: Sun Jul 22, 2012 07:01 PM
Re: How many time my application is run in memory
Posted: Fri May 13, 2022 09:18 PM

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.

Posts: 195
Joined: Sun Jul 22, 2012 07:01 PM
Re: How many time my application is run in memory
Posted: Fri May 13, 2022 09:19 PM

(Get-Process | Where-Object {$_.Name -eq 'YourApp'}).count

Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: How many time my application is run in memory
Posted: Sat May 14, 2022 07:04 PM
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.
Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: How many time my application is run in memory
Posted: Sat May 14, 2022 07:07 PM
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.
Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: How many time my application is run in memory
Posted: Sat May 14, 2022 08:11 PM

Dear Hakan,

Do you mean that you want to allow just one single execution of your app ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: How many time my application is run in memory
Posted: Sat May 14, 2022 08:47 PM
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 (fw): Select all Collapse
                        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.
Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: How many time my application is run in memory
Posted: Sat May 14, 2022 09:20 PM
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1392
Joined: Mon May 14, 2007 09:49 AM
Re: How many time my application is run in memory
Posted: Sun May 15, 2022 05:47 AM

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

Posts: 1772
Joined: Thu Sep 05, 2019 05:32 AM
Re: How many time my application is run in memory
Posted: Sun May 15, 2022 06:26 AM
hi,

when run same App "more" than once it will use same "Name" in each Instance

Code (fw): Select all Collapse
 IF HowManyApp("Notepad.exe") > 1
    MsgInfo("more that 1 Instance running ! ")

Code (fw): Select all Collapse
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
greeting,

Jimmy
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: How many time my application is run in memory
Posted: Sun May 15, 2022 07:58 AM

many thanks Jimmy! :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: How many time my application is run in memory (SOLVED)
Posted: Sun May 15, 2022 10:06 AM
Jimmy wrote:hi,

when run same App "more" than once it will use same "Name" in each Instance

Code (fw): Select all Collapse
 IF HowManyApp("Notepad.exe") > 1
    MsgInfo("more that 1 Instance running ! ")

Code (fw): Select all Collapse
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.
Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: How many time my application is run in memory
Posted: Sun May 15, 2022 10:41 AM
Jimmy wrote:hi,

when run same App "more" than once it will use same "Name" in each Instance

Code (fw): Select all Collapse
 IF HowManyApp("Notepad.exe") > 1
    MsgInfo("more that 1 Instance running ! ")

Code (fw): Select all Collapse
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.
Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 1091
Joined: Thu Nov 17, 2005 11:08 AM
Re: How many time my application is run in memory (SOLVED)
Posted: Tue May 17, 2022 09:05 AM

8)

Marco Boschi
info@marcoboschi.it