ソフトウェアにタイマーを組み込む
ソフトウェアにタイマーのようなものを仕込みたい。
例えば、ある時間が経過すると何かが発動するようなもの。用途はいろいろ考えられるが、ユーザーに提供するお試し版ソフトウェアをある期日まで使用可能とし、それ以降は起動できないようにする、とか。悪意がある使い方は考えていない。
ここでは、起動したときの日付けを調べて、事前に設定した期日よりも前ならば画面を起動し、後ならば画面を起動しない、という動作をするコードを書く。
datetimeモジュールを使う。datetimeモジュールによって得られるオブジェクトは、例えば、
$ python >>> import datetime >>> print datetime.datetime(2001,01,01) 2001-01-01 00:00:00
のようになる。オブジェクト同士で比較ができるので、日時が過ぎたか過ぎてないかの判断に使える。
簡単な実装例としては、以下のようになる。
# today is 2012,04,25 import wx import datetime t0 = datetime.datetime(2001,01,01) #この場合期限切れになる。 #t0 = datetime.datetime(2020,01,01) #この場合まだ期限前。 class MyApp(wx.App): def OnInit(self): wx.MessageBox("Hello", "wxApp") return True if __name__ == "__main__": t1 = datetime.datetime.now() #実行した日付 if t1 < t0: app = MyApp(False) app.MainLoop() else: print "This license have expired."
上のコードで、「t0」が指定する期日となる。このスクリプトを実行した日が、t0で指定した期限前だと下の画面が起動する。つまり、正常動作する場合。
実行した日が、t0で指定した期限後だと画面は立ち上がらずに、「This license have expired.」というメッセージを表示して終了する。つまり、正常動作しない場合。