如何利用Python制作类似cmd的应用(二)

上期完成了其中一部分:https://blog.csdn.net/weiwenzem/article/details/12804484

继续接着做,先来看一下程序结构图

 1.imagination是项目名

2main-program为主程序包,其中imagination.py为主程序

(1)cdkey中含有邮件发送模块,将登录密码发送给指定的邮箱

(2)Client用来更新

(3)Key生成密码

3.startingena.py引导程序启动

4.至于flies_del.bat好像没有什么实在的意义,先留着吧......

imaginationos\main-program\cdkey\scratch_2.py(怎么用Python发邮件,自行上百度)

import random

f = open("D:\imaginationos\main-program\cdkey\mm.txt")
quotes = f.readlines()
f.close()
sampling = random.sample(quotes, 1)

e = input("请输入您的电子邮箱地址(请输入正确有效的地址):")

host_server = 'smtp.qq.com'
sender_qq = '发送者的邮箱'
pwd = ''
receiver = [e]
mail_title = 'Imagination OS登录密码'
mail_content = e + "您好!\n感谢您使用Imagination OS系统,这里是您的登录密码 " + str(sampling) + ",请妥善保管。\n由于部分原因,您收到的代码可能为[" \
                                                                                         "'xxxxxxxxxxxxxxxx/n']," \
                                                                                         "请忽略多于的内容。\nImagination OS团队 "
# 初始化一个邮件主体
msg = MIMEMultipart()
msg["Subject"] = Header(mail_title, 'utf-8')
msg["From"] = sender_qq
# msg["To"] = Header("测试邮箱",'utf-8')
msg['To'] = ";".join(receiver)
# 邮件正文内容
msg.attach(MIMEText(mail_content, 'plain', 'utf-8'))
smtp = SMTP_SSL(host_server)  # ssl登录
# login(user,password):
# user:登录邮箱的用户名。
# password:登录邮箱的密码,像笔者用的是网易邮箱,网易邮箱一般是网页版,需要用到客户端密码,需要在网页版的网易邮箱中设置授权码,该授权码即为客户端密码。
smtp.login(sender_qq, pwd)
# sendmail(from_addr,to_addrs,msg,...):
# from_addr:邮件发送者地址
# to_addrs:邮件接收者地址。字符串列表['接收地址1','接收地址2','接收地址3',...]或'接收地址'
# msg:发送消息:邮件内容。一般是msg.as_string():as_string()是将msg(MIMEText对象或者MIMEMultipart对象)变为str。
smtp.sendmail(sender_qq, receiver, msg.as_string())
# quit():用于结束SMTP会话。
smtp.quit()

imaginationos\main-program\Key\scratch_2.py

# coding=utf-8
import random

list = []
# 生成26个大写的字母
for x in range(65, 91):
    a = str(chr(x))
    list.append(a)
# 生成26个小写字母
for x in range(97, 123):
    a = str(chr(x))
    list.append(a)
# 生成10个数字
for x in range(10):
    list.append(str(x))
'''
def gen_code():
    a=random.sample(list,16)
    print a
'''


# 生成16位激活码
def gen_code():
    s = ''
    for x in range(16):
        a = random.choice(list)
        s = s + a
    print(s)


# 生成200个激活码
for x in range(200):
    gen_code()

imaginationos\startingend.py

这里需要运行管理员,才能运行

import ctypes, sys
import os


def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False


if is_admin():
    # 这里写入需要管理员权限执行的操作
    app = Application(backend="uia").start(r"D:\imaginationos\main-program\imaginationos.py")
    pass
else:
    if sys.version_info[0] == 3:
        ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)


def first():
    import os
    f = input("是否首次使用?(y/n):")
    if f == "y":
        os.system('D:\imaginationos\main-program\cdkey\scratch_2.py')
        print("密码以发送至您的邮箱,请查收!")
        os.system('D:\imaginationos\main-program\imaginationos.py')
    elif f == "n":
        os.system('D:\imaginationos\main-program\imaginationos.py')
    else:
        first()


first()

文件还需完善,等完成后,再贴上效果图......

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值