主頁 > 後端開發 > python:哈工大(深圳)每日疫情上報,并發送截圖到郵箱

python:哈工大(深圳)每日疫情上報,并發送截圖到郵箱

2021-04-02 08:41:21 後端開發

python:每日疫情上報,完成后發送截圖到郵箱

  • 前言
  • 1.疫情上報(以哈工大(深圳)為例)
    • 1.1安裝selenium
    • 1.2安裝webdriver瀏覽器驅動(以Egde為例)
    • 1.3 代碼介紹
  • 2.SMTP發送郵件(QQ郵箱為例)
    • 2.1需要修改的部分
    • 2.2 效果圖
  • 3.設定為定時上報
  • 4.整體代碼
  • 5.不足
  • 參考博客

前言

開學以來,學校一直都要求每日疫情上報,時常會忘記,為了更好的配合學校作業,按時上報,在室友的提醒下,想到寫一個python腳本完成此任務,完成方式主要兩種,方法一直接用 selenium 模擬瀏覽器操作實作動態HTML處理,完成報送,方法二是根據資料特征直接封裝有效的post包發至目標服務器,實作資訊報送,并監聽服務器回應,
方法一其實是屬于“半自動化”,存在一些弊端,但是實作簡單,本著以最快的最容易理解的方式撰寫程式,選用此法,方法二是最好的實作方式,但是較為復雜,教程可參考:疫情期間每日健康報送任務的自動化處理

1.疫情上報(以哈工大(深圳)為例)

1.1安裝selenium

Selenium 是一個用于Web應用程式測驗的工具,Selenium測驗直接運行在瀏覽器中,就像真正的用戶在操作一樣,支持的瀏覽器包括IE,Mozilla Firefox,Safari,Google Chrome,Opera,Edge等,
安裝方法:win+r 輸入cmd,然后安裝selenium:

pip install selenium 

可以通過下面命令,查看selenium資訊,確認已經安裝完畢,

pip show selenium

安裝程序截圖如下,我已安裝selenium,故輸入第一個命令時會顯示已安裝,
在這里插入圖片描述

1.2安裝webdriver瀏覽器驅動(以Egde為例)

1.首次按打開網頁設定,查看Egde瀏覽器版本號,
在這里插入圖片描述
2. 點擊msedgedriver.exe下載鏈接,下載對應版本號的瀏覽器驅動,一般都是64位作業系統,點擊x64進行下載,
在這里插入圖片描述
3.下載解壓后將msedgedriver.exe拷貝到瀏覽器安裝檔案夾(桌面右擊瀏覽器圖示,打開檔案位置即可找到),記住msedgedriver.exe檔案位置,后面程式中設定會用到,(注:另外一種方法,將其加入環境變數的path,程式中就不用設定,暫不介紹,)
在這里插入圖片描述
注: 其他瀏覽器的webdriver下載鏈接可在此博文中(點擊跳轉)找到,該博文是以chrome為例進行講解的,

1.3 代碼介紹

本著以簡單快捷的方式完成哈工大(深圳)疫情上報,在此只介紹關鍵部分,其他學校或者對相關內容感興趣的同學可做深層次了解,以便修改完善功能,此部分代碼實作的功能是疫情上報,并將截圖保存至檔案夾中,用于下一部分的郵件發送,
1.3.1需要修改的部分(代碼10、11行):
輸入學號和密碼,可支持輸入多個同學的學號與密碼,實作多人上報,

stu_number = ['20S153xxx(1)', '20S153xxx(2)', '20S153xxx(3)', '20S153xxx(4)']   # 輸入不同同學的學號,需修改
stu_password = ['xxxxx(1)', 'xxxxx(2)', 'xxxxx(3)', 'xxxxx(4)']  # 輸入不同同學的密碼,需修改

修改瀏覽器驅動存放的位置(代碼17行):

driver_url = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver.exe"  # 輸入webdriver放置的路徑

注:其他學校的同學要修改上報官網(代碼20行),

# 進入疫情上報官網,根據學校上報網址進行修改,
driver.get("https://sso.hitsz.edu.cn:7002/cas/login?service=http%3A%2F%2Fxgsm.hitsz.edu.cn%2Fzhxy-xgzs%2Fcommon%2FcasLogin%3Fparams%3DL3hnX21vYmlsZS94c0hvbWU%3D")

1.3.2 部分代碼介紹
程式中很關鍵的部分是找到對應的元素,并進行點擊、輸入或修改等相關的操作,詳細的定位與操作可參考博客:Python語言selenium包webdriver,定位網頁元素的8種方法
在本程式中用到了以下幾種:
1.id定位:find_element_by_id(“id值”);id屬性是唯一的
2.class定位:元素的類名,find_element_by_class_name(“class值”)
3.link定位:專門用來定位文本鏈接,find_element_by_link_name(“text”);
4.XPath定位:find_element_by_xpath(""),分為絕對定位和相對定位,

在登陸界面使用的是id和class定位,打開網頁,按F12查看網頁源代碼,查找相應位置,
在這里插入圖片描述
對應代碼如下,send_keys()用于輸入資訊,click()模擬點擊:

username = driver.find_element_by_id('username')  # 學號定位
username.send_keys(stu_number[i])  # 輸入學號
password = driver.find_element_by_id('password')  # 密碼定位
password.send_keys(stu_password[i]) # 輸入密碼
driver.find_element_by_id('rememberMe').click()  # 點擊記住密碼
driver.find_element_by_class_name('landing_btn_bg').click()  # 登錄

第二個界面,點擊每日上報,使用link定位:
在這里插入圖片描述
對應代碼:

 driver.find_element_by_partial_link_text('每日上報').click()

第三個界面的新增元素,產用的是xpath相對定位,
對應代碼:

driver.find_element_by_xpath('//*[@class="weui-btn_cell weui-btn_cell-primary open-popup"]/div[1]').click()  # 點擊新增
time.sleep(5)  # 注意程式延時問題,時間短導致未提交就已經退出了,

第四個界面填報相關資訊,由于哈工大(深圳)填報后會有之前的記錄,所以直接提交即可,使用id定位和XPath絕對定位,
在這里插入圖片描述
對應代碼:

 # 因為哈工大會自動記錄上一天的資訊,所以不需要填報其他資訊可直接提交
driver.find_element_by_id('txfscheckbox').click()  # 我已仔細閱讀并同意
time.sleep(1)
driver.find_element_by_xpath('/html/body/div[5]').click()
time.sleep(5)     # 延時,完成后界面回傳進行截圖,

此后的操作便是截圖保存,詳細資訊見第四部分-整體代碼

2.SMTP發送郵件(QQ郵箱為例)

此部分實作的功能的是使用SMTPF發送郵件,并將疫情上報截圖發送到對應同學郵箱,
SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用于由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式,python的smtplib提供了一種很方便的途徑發送電子郵件,它對smtp協議進行了簡單的封裝,(參考:Python SMTP發送郵件)

2.1需要修改的部分

from_address = 'xxxxxx@qq.com'  # 發送方郵箱(自己的郵箱)
password_email = 'xxxxxxxx'  # 進入qq郵箱->設定->賬戶->找到stmp服務,點擊開啟,驗證后會給你一個授權碼,直接復制,填入下方即可
to_address = ['xxx(1)@qq.com', 'xxx(2)@qq.com', 'xxx(3)@qq.com', 'xxx(4)@qq.com']  # 收信方郵箱

QQ郵箱授權碼獲取方式如下,進入qq郵箱->設定->賬戶->找到stmp服務,點擊開啟:
在這里插入圖片描述
在這里插入圖片描述
郵件發送的內容是文字+圖片+附件,具體的代碼介紹見第四部分-整體代碼,有詳細注釋,

2.2 效果圖

在這里插入圖片描述

3.設定為定時上報

由于沒有服務器,所以只有定時開機+計劃任務的方式執行python腳本,
1.win10設定計劃任務執行python,不重復介紹,參看教程:win10計劃任務定時啟動python程式
注意設定之后要勾選使用最高權限,不然不能訪問截圖:
在這里插入圖片描述
任務截圖:
在這里插入圖片描述

2.定時開機需要進入bios,前提是bios支持電源管理(每個主板bios設定不同)參看教程:怎樣讓電腦定時開機

4.整體代碼

哈工大(深圳)的同學修改賬戶郵箱資訊后直接使用,可實作單人或者多人疫情上報,有兩點需要特別注意:1.點擊新增后的延時程式時間一定夠,否則會顯示未提交;2.工大每天只能上報一次,請慎重進行代碼測驗,

from selenium import webdriver
import time
from pathlib import Path
import smtplib
from email.mime.multipart import MIMEMultipart   # 構建多個元素
from email.mime.image import MIMEImage  # 構建郵件圖片
from email.mime.text import MIMEText  # 構建郵件文本
from email.header import Header  # 呼叫header檔案
# 需要修改的部分
stu_number = ['20S153xxx(1)', '20S153xxx(2)', '20S153xxx(3)', '20S153xxx(4)']   # 輸入不同同學的學號,需修改
stu_password = ['xxxxx(1)', 'xxxxx(2)', 'xxxxx(3)', 'xxxxx(4)']  # 輸入不同同學的密碼,需修改
stu_name = ['xxx(1)', 'xxx(2)', 'xxx(3)', 'xxx(4)']  # 附件加上同學名字首寫字母前綴,用以區分,不必須
from_address = 'xxxxxx@qq.com'  # 發送方郵箱(自己的郵箱)
password_email = 'xxxxxxxx'  # 進入qq郵箱->設定->賬戶->找到stmp服務,點擊開啟,驗證后會給你一個授權碼,直接復制,填入下方即可
to_address = ['xxx(1)@qq.com', 'xxx(2)@qq.com', 'xxx(3)@qq.com', 'xxx(4)@qq.com']  # 收信方郵箱
for i in range(len(stu_number)):
    driver_url = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver.exe"  # 輸入webdriver放置的路徑
    driver = webdriver.Edge(executable_path=driver_url)
    # 進入疫情上報官網,根據學校上報網址進行修改,
    driver.get("https://sso.hitsz.edu.cn:7002/cas/login?service=http%3A%2F%2Fxgsm.hitsz.edu.cn%2Fzhxy-xgzs%2Fcommon%2FcasLogin%3Fparams%3DL3hnX21vYmlsZS94c0hvbWU%3D")
    driver.maximize_window()    # 最大化視窗
    # 登錄資訊
    time.sleep(1)
    username = driver.find_element_by_id('username')  # 學號定位
    username.send_keys(stu_number[i])  # 輸入學號
    password = driver.find_element_by_id('password')  # 密碼定位
    password.send_keys(stu_password[i]) # 輸入密碼
    driver.find_element_by_id('rememberMe').click()  # 點擊記住密碼
    driver.find_element_by_class_name('landing_btn_bg').click()  # 登錄
    time.sleep(1)
    driver.find_element_by_partial_link_text('每日上報').click()
    time.sleep(1)
    driver.find_element_by_xpath('//*[@class="weui-btn_cell weui-btn_cell-primary open-popup"]/div[1]').click()  # 點擊新增
    time.sleep(5)  #  注意程式延時問題,時間短導致未提交就已經退出了,
    # 因為哈工大會自動記錄上一天的資訊,所以不需要填報其他資訊可直接提交
    driver.find_element_by_id('txfscheckbox').click()  # 確認
    time.sleep(1)
    driver.find_element_by_xpath('/html/body/div[5]').click()
    time.sleep(5)     # 延時,完成后界面回傳進行截圖,
    current_time = time.strftime(stu_name[i]+"%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))  #  記錄截圖時間,并以該時間命名
    filename = u'.\\image'  # 新創建路徑“.”表示當前整個.py檔案的路徑所在的位置,“\\”路徑分割符,其中的一個是"\"轉義符
    pic_path = filename + '\\' + current_time + '.png'
    if Path(filename).is_dir():  # 判斷檔案夾是否存在,不存在就新建一個新的
        pass
    else:
        Path(filename).mkdir()
    time.sleep(2)
    driver.save_screenshot(pic_path)   # 截取當前url頁面的圖片,并且將截取的圖片保存在指定的路徑并以截圖時間命名)
    print(pic_path)  # 列印路徑
    time.sleep(1)
    driver.close()  # 關閉網頁
    # 發信服務器
    msg = MIMEMultipart('related')  # mixed -- 混合型 alternative--文本混合 related--多媒體元素
    # 郵件頭資訊
    msg['From'] = Header(from_address)
    msg['To'] = Header(to_address[i])
    msg['Subject'] = Header('每日疫情填報情況', 'utf-8')
    # 開啟發信服務,這里使用的是加密傳輸
     # 正文-圖片 通過html格式來放圖片,可通過cid 編號實作上傳多個圖片
    mail_msg = '''
    <p>今日疫情上報,無需回復,</p>
    <p>\n\t 上報截圖:</p>
    <p><img src="cid:image1"></p>  
    '''
    msg.attach(MIMEText(mail_msg, 'html', 'utf-8'))
    #  添加圖片
    file = open(pic_path, "rb")
    img = MIMEImage(file.read())
    file.close()
    img.add_header('Content-ID', '<image1>')
    msg.attach(img)  # 正文添加圖片
    #  下面的代碼是上傳附件,不必須,正文中有圖片就可以注釋掉,
    file = open(pic_path, "rb")
    img = MIMEImage(file.read())
    file.close()
    img.add_header('Content-Disposition', 'attachment', filename=current_time+'疫情上報.png')
    msg.attach(img)  # 正文添加附件
    smtp_server = 'smtp.qq.com'  # 選擇用QQ郵箱發送
    server = smtplib.SMTP_SSL(smtp_server)
    server.connect(smtp_server, 465)  # 465 為 SMTP 埠號
    server.login(from_address, password_email)     # 登錄發信郵箱
    server.sendmail(from_address, to_address[i], msg.as_string())     # 發送郵件
    server.quit()     # 關閉服務器

5.不足

1.沒有服務器,只能采取定時開機+計劃任務的方法執行程式,
2.每日上報的資訊一樣,比如溫度,程式中未修改體溫,而是使用以前填寫的體溫,直接上報,感興趣的同學可以增加此功能,
3.此實作方法只能算“半自動化”,存在需要webdriver等環境依賴,體積大,運行慢,不便封裝;每次報送需定位,程序慢,容錯率低,且不支持異地主機自動化處理;明文存盤賬戶資訊等缺點,若感興趣且有時間可用發送報文的方式實作,

參考博客

1.python+selenium 實作疫情自動填報(前面兩個都不會也可以做)
2.Python+Selenium 疫情上報自動打卡截圖發郵箱
3.Python語言selenium包webdriver,定位網頁元素的8種方法
4.Python SMTP發送郵件
5.win10計劃任務定時啟動python程式
6.怎樣讓電腦定時開機
7.疫情期間每日健康報送任務的自動化處理

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/271355.html

標籤:python

上一篇:pandas常用操作大全,最全!附檔案下載

下一篇:python某漫畫app逆向

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more