Pythonでパスワード生成&クリップボードへコピー

自分でランダムなパスワードを考えるのが億劫なので適応な長さのパスワードを生成してクリップボードに貼り付けるプログラムを書いた。

#! /usr/local/bin/python2.6
# coding: utf-8
# n文字のパスワードを作成するプログラム。
# 最後にプロンプトを出してクリップボードにデータをコピーする。
# そのコードはコピペ.
# ref: http://www.python.jp/pipermail/python-ml-jp/2007-October/004137.html

import random
import string

n = 10
lst = string.lowercase + string.uppercase + string.digits
pwd = "".join(random.choice(lst) for i in range(n))
print pwd
n = raw_input(u"copy to clipboard? [y/n]")

if n == "y":
    import ctypes
    CF_UNICODETEXT = 13
    GHND = 66
    bufferSize = (len(pwd)+1)*2
    hGlobalMem = ctypes.windll.kernel32.GlobalAlloc(ctypes.c_int(GHND), ctypes.c_int(bufferSize))
    ctypes.windll.kernel32.GlobalLock.restype = ctypes.c_void_p
    lpGlobalMem = ctypes.windll.kernel32.GlobalLock(ctypes.c_int(hGlobalMem))
    ctypes.cdll.msvcrt.memcpy(lpGlobalMem, ctypes.c_wchar_p(pwd), ctypes.c_int(bufferSize))
    ctypes.windll.kernel32.GlobalUnlock(ctypes.c_int(hGlobalMem))

    if ctypes.windll.user32.OpenClipboard(0):
        ctypes.windll.user32.EmptyClipboard()
        ctypes.windll.user32.SetClipboardData(ctypes.c_int(CF_UNICODETEXT), ctypes.c_int(hGlobalMem))
        ctypes.windll.user32.CloseClipboard()
        raw_input(u"done.")