99using Microsoft . Win32 ;
1010using Newtonsoft . Json ;
1111using SHDocVw ;
12+ using System . Text ;
13+ using System . Diagnostics ;
1214
1315/**
1416 * ____ _ __ __
@@ -69,6 +71,7 @@ public void CheckInstall()
6971 StreamWriter jsonDb = new StreamWriter ( SettingsFile ) ;
7072 SettingsFile s = new SettingsFile ( ) ;
7173 s . BhoCreatedVersion = CurrentVersion ( ) ;
74+ s . LastUpdateCheckDate = DateTime . Now ;
7275
7376 jsonDb . Write ( JsonConvert . SerializeObject ( s ) ) ; // Write blank json settings file
7477 jsonDb . Close ( ) ;
@@ -224,6 +227,71 @@ public static string WildcardToRegex(string[] pattern)
224227 }
225228 return _out ;
226229 }
230+
231+ private void CheckUpdate ( )
232+ {
233+ if ( _prefs . Settings . LastUpdateCheckDate < DateTime . Now - TimeSpan . FromDays ( 3 ) )
234+ {
235+ try
236+ {
237+ HttpWebRequest wc = ( HttpWebRequest ) WebRequest . Create ( new Uri ( "https://servc.eu/p/scriptmonkey/version.php" ) ) ;
238+ StringBuilder sb = new StringBuilder ( ) ;
239+ byte [ ] buf = new byte [ 8192 ] ;
240+ Stream resStream = wc . GetResponse ( ) . GetResponseStream ( ) ;
241+
242+ string tempString = null ;
243+ int count = 0 ;
244+ do
245+ {
246+ count = resStream . Read ( buf , 0 , buf . Length ) ;
247+ if ( count != 0 )
248+ {
249+ tempString = Encoding . ASCII . GetString ( buf , 0 , count ) ;
250+ sb . Append ( tempString ) ;
251+ }
252+ }
253+ while ( count > 0 ) ;
254+
255+ UpdateResponse response = JsonConvert . DeserializeObject < UpdateResponse > ( sb . ToString ( ) ) ;
256+
257+ if ( response . Success && response . LatestVersion > CurrentVersion ( ) )
258+ {
259+ UpdateBHOFrm form = new UpdateBHOFrm ( ) ;
260+ form . currentVersionTxt . Text = CurrentVersion ( ) . ToString ( ) ;
261+ form . newVersionTxt . Text = response . LatestVersion . ToString ( ) ;
262+ form . textBox1 . Text = response . Changes ;
263+ form . ShowDialog ( ) ;
264+
265+ if ( form . Response != UpdateBHOFrm . UpdateBHOFrmResponse . NextTime )
266+ {
267+ _prefs . Settings . LastUpdateCheckDate = DateTime . Now ;
268+ _prefs . Save ( ) ;
269+ _prefs . ReloadData ( ) ;
270+ }
271+ if ( form . Response == UpdateBHOFrm . UpdateBHOFrmResponse . Now )
272+ {
273+ new Process
274+ {
275+ StartInfo =
276+ {
277+ FileName = "iexplore.exe" ,
278+ Arguments = "https://servc.eu/p/scriptmonkey/update.html"
279+ }
280+ } . Start ( ) ;
281+
282+ }
283+ }
284+ else
285+ {
286+ _prefs . Settings . LastUpdateCheckDate = DateTime . Now ;
287+ _prefs . Save ( ) ;
288+ _prefs . ReloadData ( ) ;
289+ }
290+ }
291+ catch ( Exception ex ) { }
292+ }
293+
294+ }
227295 #endregion
228296
229297 [ Guid ( "6D5140C1-7436-11CE-8034-00AA006009FA" ) ]
@@ -241,7 +309,11 @@ int IObjectWithSite.SetSite(object site)
241309
242310 // Only need to check for install once per run.
243311 if ( ! _installChecked )
312+ {
244313 CheckInstall ( ) ;
314+ CheckUpdate ( ) ;
315+ }
316+
245317
246318 this . _site = site ;
247319
0 commit comments