<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Lucida Console";
        panose-1:2 11 6 9 4 5 4 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1027870726;
        mso-list-type:hybrid;
        mso-list-template-ids:1634518314 625608564 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:.75in;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:1.25in;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:1.75in;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:2.25in;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:2.75in;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:3.25in;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:3.75in;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:4.25in;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:4.75in;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Good morning OPLINTECH,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">                Fair warning, this  may not apply to all of you, and may also require modification of parameters for it to work on your system.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-indent:.5in">We use III’s telrenew for our telephone renewal system. Like most things III, we struggle with their software working reliably and can’t get them to support it. For years, (and I really do mean years) we have been
 checking the telephone renewal hotline every morning as part of our morning routine in IT. Sometimes if it would die over the weekend, or right after close, it would be down till next business day when we checked it. We also had times that it would die out
 an hour after we checked it. <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-indent:.5in">Before you start to ask why we don’t just monitor it and reopen it when it closes, well it’s not that simple. We run Nagios as monitoring software for all servers and critical applications. Nagios tells us when
 things are not responding and offline. The issue with telrenew though was not that it was crashing, but that it was locking up. You would log onto the server, and there it would be in all of its frozen glory. However windows did not see it as un-responsive.
 Patrons of course seem to know the second something is no longer working and would decide that this was something that the director of the library needed to know about, instead of just calling and letting us know it was down.
<o:p></o:p></p>
<p class="MsoNormal" style="text-indent:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="text-indent:.5in">This gets me to the meat and potatoes part of this email. After hearing that the director was getting patron calls about this, I sat down and tried to come up with a way to “fix” the issue. I tore down the application
 code and tried to sift through anything useful.  There were no command line parameters you could send, and nothing I could see helpful in the code. (Admittedly I am NOT a programmer.) If you use telrenew you know that when it first opens, you then have to
 select the “renew” option to start the program, the other button is for settings. So we were stuck. Even more so because the app was not actually crashing or being non-responsive according to windows.
<o:p></o:p></p>
<p class="MsoNormal" style="text-indent:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="text-indent:.5in">My next step was to spend some time watching the process on the computer and coming up with a way that I could get the program to lock up on demand so I could test my script. (BTW to lock it up, just open a second
 instance, worked every time.) After lots of tweaking, below (and attached) is what I came up with to band aid the program. This has been in place now for almost 5 months and we have not had any more issues. Sorry for the long winded email, but I hope that
 this script can help other people. Enjoy!<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><u>Explanation of Script:<o:p></o:p></u></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-indent:.5in"><i>Preface</i>: Because this script implements keystrokes, you must have the computer\server logged on at all times for this to work. We set ours up with autologon, removed any session timeout options, and set up
 VNC so we could access the machines current session. This PC now stays logged in 24/7.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoListParagraph" style="margin-left:.75in;text-indent:-.25in;mso-list:l0 level1 lfo1">
<![if !supportLists]><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">      
</span></span><![endif]>Use Windows Scheduler to run the telrenew_restart.ps1 powershell script every 15min between the hours of 12:00am and 11:45pm.<o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:.75in;text-indent:-.25in;mso-list:l0 level1 lfo1">
<![if !supportLists]><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">      
</span></span><![endif]>The script first checks to see if the memory usage is bloated by telrenew.exe and then if it is, it closes the app. This prevents the app from sitting frozen\not responding. (Seems to run at around 5000k of memory usage normally, and
 when it locks up it hits 14000k of memory used. The script closes the app when it goes over 12000k in use)<o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:.75in;text-indent:-.25in;mso-list:l0 level1 lfo1">
<![if !supportLists]><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman"">      
</span></span><![endif]>After the script checks to make sure it’s memory usage is not bloated, it then checks to see if it’s even running. This is a two-step process involving checking if the program is just open, or if its open and running. If it is open and
 running then nothing happens. If it is just open but not running, it kills the process, reopens, and sends the “enter” keystroke to start the “renew” portion of the program. (Just open it uses under 4000k of memory, open and running it uses around 5000K) It
 also opens the program and sends “enter” if it’s just not running at all.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><u>Script:<o:p></o:p></u></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:darkgreen"># ***************************************************</span><span style="font-size:9.0pt;font-family:"Lucida Console""><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:darkgreen"># ASCPL Telrenew Restart Script Edited Last: 11-14-14</span><span style="font-size:9.0pt;font-family:"Lucida Console""><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:darkgreen"># ***************************************************</span><span style="font-size:9.0pt;font-family:"Lucida Console""><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:darkgreen">#</span><span style="font-size:9.0pt;font-family:"Lucida Console""><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:darkgreen"># This step checks to see if the memory is bloated above 12000k indicating that the app is most likely frozen. If true,
 it kills the process.</span><span style="font-size:9.0pt;font-family:"Lucida Console""><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:darkgray">&</span><span style="font-size:9.0pt;font-family:"Lucida Console"">
<span style="color:blue">taskkill</span> <span style="color:blueviolet">/F</span>
<span style="color:blueviolet">/FI</span> <span style="color:darkred">"IMAGENAME eq Telrenew.exe"</span>
<span style="color:blueviolet">/FI</span> <span style="color:darkred">"MEMUSAGE gt 12000"</span><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:blue">Sleep</span><span style="font-size:9.0pt;font-family:"Lucida Console"">
<span style="color:purple">5</span><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:darkgreen"># This step checks to see if the memory is below above 4000k indicating that the app is open but not running. If true,
 it kills the process.</span><span style="font-size:9.0pt;font-family:"Lucida Console""><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:darkgray">&</span><span style="font-size:9.0pt;font-family:"Lucida Console"">
<span style="color:blue">taskkill</span> <span style="color:blueviolet">/F</span>
<span style="color:blueviolet">/FI</span> <span style="color:darkred">"IMAGENAME eq Telrenew.exe"</span>
<span style="color:blueviolet">/FI</span> <span style="color:darkred">"MEMUSAGE lt 4000"</span><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:blue">Sleep</span><span style="font-size:9.0pt;font-family:"Lucida Console"">
<span style="color:purple">5</span><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:darkgreen"># This step checks to see if the application itself is running.
</span><span style="font-size:9.0pt;font-family:"Lucida Console""><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:darkgreen"># If the application is running it does nothing. If the application is not running it opens that application then waits
 5 before sending the "enter" keystroke.</span><span style="font-size:9.0pt;font-family:"Lucida Console""><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:orangered">$Running</span><span style="font-size:9.0pt;font-family:"Lucida Console"">
<span style="color:darkgray">=</span> <span style="color:blue">Get-Process</span>
<span style="color:blueviolet">Telrenew</span> <span style="color:navy">-ErrorAction</span>
<span style="color:blueviolet">SilentlyContinue</span><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:blue">Write-Host</span><span style="font-size:9.0pt;font-family:"Lucida Console"">
<span style="color:orangered">$Running</span><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:darkblue">if</span><span style="font-size:9.0pt;font-family:"Lucida Console""> (<span style="color:darkgray">!</span><span style="color:orangered">$Running</span>)
 { <o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:blue">Start-Process</span><span style="font-size:9.0pt;font-family:"Lucida Console"">
<span style="color:blueviolet">C:\Telrenew\Telrenew.exe</span> <o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:orangered">$wshell</span><span style="font-size:9.0pt;font-family:"Lucida Console"">
<span style="color:darkgray">=</span> <span style="color:blue">New-Object</span> <span style="color:navy">
-ComObject</span> <span style="color:blueviolet">wscript.shell</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:orangered">$wshell</span><span style="font-size:9.0pt;font-family:"Lucida Console";color:darkgray">.</span><span style="font-size:9.0pt;font-family:"Lucida Console"">AppActivate(<span style="color:darkred">'Telephone
 RenewalVersion 1.1'</span>)<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:blue">Sleep</span><span style="font-size:9.0pt;font-family:"Lucida Console"">
<span style="color:purple">5</span><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console";color:orangered">$wshell</span><span style="font-size:9.0pt;font-family:"Lucida Console";color:darkgray">.</span><span style="font-size:9.0pt;font-family:"Lucida Console"">SendKeys(<span style="color:darkred">'~'</span>)<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white;text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console"">}
<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:18.0pt;color:green">Shawn Whetsel</span><br>
<u><span style="font-size:10.0pt">Network Services Coordinator</span></u><br>
<a href="www.akronlibrary.org"><span style="font-size:10.0pt;color:blue;text-decoration:none"><img border="0" width="201" height="52" id="Picture_x0020_6" src="cid:image001.jpg@01D0558F.8E55DB20" alt="cid:image001.jpg@01CF6492.FFBD69C0"></span></a><br>
<span style="font-size:10.0pt">Phone: 330-643-9161<br>
E-mail: </span><a href="mailto:swhetsel@akronlibrary.org"><span style="font-size:10.0pt;color:#0563C1">swhetsel@akronlibrary.org</span></a><span style="font-size:10.0pt"><br>
Information Technology<br>
60 S. High St.<br>
Akron, OH 44326<o:p></o:p></span></p>
<p class="MsoNormal"><img border="0" width="41" height="32" id="Picture_x0020_7" src="cid:image003.jpg@01D05594.D07E8E20" alt="A+"><span style="font-size:10.0pt"><img border="0" width="72" height="32" id="Picture_x0020_8" src="cid:image005.jpg@01D05594.D07E8E20" alt="Network+"><img border="0" width="77" height="32" id="Picture_x0020_10" src="cid:image007.png@01D05594.D07E8E20" alt="Security_logo.1"></span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>