Auto closing hm session
I want to terminate the hm session if it is idle for more than one hour.
Is there any option available inside the license file? Or else what is the alternative?
Answers
-
License file, I don't know. But with License server, it seams that's possible. I'm not sure.
0 -
Hi
What do you mean 'idle'?
Suppose that you want to close if over 1h there is no user interaction on hm session:
Try a proc like this
proc ::p_MonitorHmSession {TriggerTime TriggerScript} {
if {[focus] ne ''} {
dict set ::p_MonitorHmSession -lastused [clock seconds]
} else {
if {[clock seconds]-[dict get $::p_MonitorHmSession -lastused]>$TriggerTime*3600} {
uplevel #0 $TriggerScript
dict set ::p_MonitorHmSession -lastused [clock seconds]
}
}
after cancel [list ::p_MonitorHmSession $TriggerTime $TriggerScript]
after 5000 [list ::p_MonitorHmSession $TriggerTime $TriggerScript]
}
now start the monitor:
::p_MonitorHmSession 1 hm_exit; #after 1hour if do not focus on hm window, it will exit
0 -
Hi,
Thanks a lot for the script, this is what i exactly looking for.
I have added the command to save the file in some location before closing.
0 -
Hi,
If I run a HM script that runs for more than $TriggerTime hrs and minimize the HM window, will HM get closed ? or will it wait for the script to be completed?
Regards,
Roshan
0 -
Try it!
if your script calls to command 'update' then hm will run the monitor proc and may trigger -> close hm
0 -
Hi @tinh,
If I open two or more hypermesh windows(with script in hmcustom.tcl), the script is closing the window which is on top(please see image below).
After that it is not closing other windows. I am not keeping any focus on the windows.
Script is working fine if there is only 1 hm session present. But i need to close all the sessions which are not in use. Is there any solution for this?
<?xml version="1.0" encoding="UTF-8"?>
0 -
Hi Vipin
You have to run the script on all hm sessions
put the script in a file named hmcustom.tcl in folder c:\users\your_account
hm will run it when opening
0 -
Hi tinh,
Yes I did the same, but after the first window is closed it is not working on other windows. If all windows are minimized it will work.
Only problem is if i keep windows like the above image it is not working.
0 -
I see, it's because when one session was closed, window focus in next one so it seems to get 'interaction' with user.
minimizing all can avoid this, or open other window on top (eg. notepad)
or modify script that before exiting then tells other sessions not to get focus
0 -
Hi,
If I have to extend this to Hyperview , in which file should I place this code?
Thanks,
Roshan
0 -
Hi
save the codes in any file, example C:\mystartup.tcl
right click on HV icon and select Properties
in Target field add arguments:
-tcl C:\mystartup.tcl
0 -
Hi,
For HV 14 , I found another way where I can place the code in 'hwstartup.tcl'. This file is available in '.\..\HW14.0\hw\tcl' directory.
'hwstartup.tcl' gets executed whenever HV gets launched.
Unfortunately, this tcl file is not available for HV 13 n below. Any idea what other files I can try with?
Thanks,
Roshan
0 -
Hi Roshan
you can put the codes in
c:/users/your_account/hwinit.tcl
0 -
Hi tinh,
I tried with hwinit.tcl . But, I 'm getting this error. Not sure why?
UPDATE : I had put the code in '.\..\HW14.0\hw\tcl\hwinit.tcl'.
0 -
Hi Roshan,
it because at sourcing time there is no GUI
please add this line at beginning of hwinit.tcl :
dict set ::p_MonitorHmSession -lastused [clock seconds]
0 -
Thanks tinh !!
That was helpful.
0 -
Hello Tinh
Do you have any idea how to run a tcl script before starting Hyperworks. hmcustom.tcl will run after Hyperworks GUI is loaded.
I am using Hyperorks 2022.3.
My idea is to update the extension file before the HW GUI is loaded
0