04 自動(dòng)登錄百度案例

Paste_Image.png
Paste_Image.png

里面設(shè)計(jì)到界面的技術(shù),非常簡(jiǎn)單,點(diǎn)擊界面就會(huì)有幫助文檔;當(dāng)然也可以在按鍵論壇里面學(xué)習(xí),里面各種資料;

這里要談?wù)劄g覽器的操作:
在使用如下語(yǔ)句去點(diǎn)擊或其他操作去控制網(wǎng)頁(yè)時(shí),需要"元素特征字符串"
,那么如何獲取呢?

myWindow.WebBrowser.HtmlClickEx("tag:A&txt:去簽到")
  1. 使用WQM(在按鍵精靈的安裝目錄下)可以查看特征元素(但是我在win10下竟然不可以)


  2. 如果不能使用WQM的情況下怎么辦呢?
    可以用chrome的檢查工具查看元素特征;
    原則:
    有id的用id,因?yàn)閕d足以標(biāo)識(shí)一個(gè)元素
    沒(méi)有id的可以使用組合

"tag:SPAN&txt:消息"
Paste_Image.png
源碼
/*---------------大漠注冊(cè)-----------------*/
//DimEnv dm
Function registerDM
    PutAttachment "C:\dm\","*.*" //所以文件都釋放到c盤(pán)大漠目錄下
    Call Plugin.RegDll.Reg("C:\dm\dm.dll") //注意dm.dll
    Set dm = createobject("dm.dmsoft") //創(chuàng)建一個(gè)大漠對(duì)象
    dm.SetPath "C:\dm\" //設(shè)置資源路徑

End Function
/*-------------------------------------*/


DimEnv screenW //屏幕寬度
DimEnv screenH //屏幕高度
DimEnv zhidaoAD //百度知道網(wǎng)址
DimEnv wenkuAD //百度文庫(kù)網(wǎng)址

DimEnv zhidao //是否勾選簽到百度知道
Dimenv wenku //是否勾選簽到百度文庫(kù)

DimEnv zhidaoDone//知道是否加載完成
Dimenv wenkuDone//文庫(kù)是否加載完成

DimEnv zhidaoTask//知道是否加載完成
Dimenv wenkuTask//文庫(kù)是否加載完成


Dimenv flush_time//無(wú)響應(yīng)多久刷新(線程要想獲得該值忌栅,那么必須DimEnv)
Dimenv exit_time//刷新幾次無(wú)果后退出程序

Dimenv zhidaoID //知道線程ID
DimEnv wenkuID

Dimenv zhidaoTCID //知道timer線程ID
DimEnv wenkuTCID

Dimenv zhidaoTC //定時(shí)器執(zhí)行次數(shù)(TimerCount)
Dimenv wenkuTC

DimEnv info //提示信息

/*----------------前端操作------------------*/
//窗體加載
Event myWindow.Load
    
    screenW = Plugin.Sys.GetScRX()
    screenH = Plugin.Sys.GetScRY()
    
    zhidaoAD = "http://zhidao.baidu.com/"
    wenkuAD = "http://wenku.baidu.com/task/browse/daily"
    
    zhidao = myWindow.zhidao_cb.Value
    wenku = myWindow.wenku_cb.Value
    
    zhidaoDone = false
    wenkuDone = false
    
    zhidaoTask = false
    wenkuTask = false
    
    zhidaoTC = 0
    wenkuTC = 0
    
    flush_time = myWindow.flushT_cb.ListIndex
    exit_time = myWindow.exitT_cb.ListIndex
    
End Event

//瀏覽器加載完成


//勾選知道
Event myWindow.zhidao_cb.Click
    If myWindow.zhidao_cb.Value = 1 Then 
        zhidao = True
    Else 
        zhidao = false
    End If
End Event

//勾選文庫(kù)
Event myWindow.wenku_cb.Click
    If myWindow.wenku_cb.Value = 1 Then 
        wenku = True
    Else 
        wenku = false
    End If
End Event

// 刷新 時(shí)間
Event myWindow.flushT_cb.SelectChange
    flush_time = myWindow.flushT_cb.ListIndex
End Event

// 時(shí)間 結(jié)束
Event myWindow.exitT_cb.SelectChange
    exit_time = myWindow.exitT_cb.ListIndex
End Event

//啟動(dòng)
Event myWindow.go.Click

    temp = BeginThread(operateManag)
    
End Event



/*--------------后臺(tái)操作---------------*/

//總操作線程
Sub operateManag
//  promptFun
    tmep = BeginThread(isDone)
    
    //如果勾選了知道那么開(kāi)啟簽到知道進(jìn)程
    If zhidao Then 
        zhidaoID = BeginThread(signZhiDao_pro)
        
    End If
    
    //如果勾選了知道那么開(kāi)啟簽到知道進(jìn)程
    If wenku Then 
        wenkuID = BeginThread(signWenKu_pro)
        
    End If
End Sub





// 設(shè)置提示
Function promptFun()
    Dim prompt
    
    If zhidao Then 
        prompt = prompt & "簽到百度知道 | "
    End If
    
    If wenku Then 
        prompt = prompt & "簽到百度文庫(kù) | "
    End If
    
    prompt = prompt & ("無(wú)響應(yīng)" & (flush_time*1000+100000) & "秒后刷新 | ")
    
    prompt = prompt & ("刷新" & (exit_time*1000+10000) & "秒無(wú)響應(yīng)后退出 | ")
    
    MessageBox "您的設(shè)置為:   " & prompt & "若想修改待错,請(qǐng)及時(shí)按熱鍵取消操作"
End Function

//百度知道簽到(線程)
Sub signZhiDao_pro
    zhidaoTCID = BeginThread(zhidaoTimer_pro)
    signZhiDao
End Sub

//百度文庫(kù)簽到(線程)
Sub signWenKu_pro
    
    //如果勾選了百度知道,那么等待其先完成
    Do While True
        If (zhidao and zhidaoTask) or zhidao = false Then 
            Exit Do
        End If
            
        Delay 1000
    Loop
    
    wenkuTCID = BeginThread(wenkuTimer_pro)
    signWenKu 
End Sub


// 百度知道簽到(函數(shù))
Function signZhiDao()
    registerDM

    //加載網(wǎng)址并等待網(wǎng)頁(yè)加載完成
    myWindow.WebBrowser.Url = zhidaoAD
    Do
        Delay 200
    Loop While not (myWindow.WebBrowser.GetReadyState = 4) //等待加載完網(wǎng)頁(yè)(4表示加載完成)
    
    myWindow.WebBrowser.Refresh
    Do
        Delay 200
    Loop While not (myWindow.WebBrowser.GetReadyState = 4) //等待加載完網(wǎng)頁(yè)(4表示加載完成)
    
    myWindow.WebBrowser.HtmlClickEx("tag:A&txt:去簽到")
    //彈出網(wǎng)頁(yè)所占寬度 高度
//  temp = myWindow.WebBrowser.RunJS(0,"alert(document.body.scrollWidth);")
//  temp = myWindow.WebBrowser.RunJS(0,"alert(document.body.scrollHeight);")
    Delay 1000

    Do While True
        dm_ret = dm.FindPic(0, 0, screenW, screenH, "點(diǎn)擊簽到.bmp", "000000", 0.9, 0, intX, intY)
        
        
        If not (dm_ret = - 1 )  Then 
            TracePrint "已找到"
            Exit Do
        Else 
            TracePrint "找字/圖中"
        End If
        Delay 2000
    Loop

    MoveTo intX, intY

    LeftClick 1
    
    Delay 1000
    
    zhidaoTask = True
End Function


// 百度文庫(kù)簽到(函數(shù))
Function signWenKu()
    registerDM

    //加載網(wǎng)址并等待網(wǎng)頁(yè)加載完成
    myWindow.WebBrowser.Url = wenkuAD
    Do
        Delay 200
    Loop While not (myWindow.WebBrowser.GetReadyState = 4) //等待加載完網(wǎng)頁(yè)(4表示加載完成)
    
    myWindow.WebBrowser.Refresh
    Do
        Delay 200
    Loop While not (myWindow.WebBrowser.GetReadyState = 4) //等待加載完網(wǎng)頁(yè)(4表示加載完成)
    
    myWindow.WebBrowser.ScrollTo 980, 1200

    Delay 500

    Do While True
        dm_ret = dm.FindPic(0, 0, screenW, screenH, "馬上簽到.bmp", "000000", 0.9, 0, intX, intY)
        
        If not(dm_ret=-1) Then
            Exit Do
        Else 
            TracePrint "找字/圖中"
        End If
        Delay 2000
    Loop

    MoveTo intX + 5, intY + 5
    
    LeftClick 1
    
    Delay 1000

    wenkuTask = True
End Function

/*--------------輔助函數(shù)---------------*/

//開(kāi)啟定時(shí)器線程

Sub zhidaoTimer_pro
    For (flush_time + 10)
        Delay 1000
        TracePrint "zhidaoTimer"
    Next
    
    
    If zhidaoTC >= (exit_time + 1) Then 
        info = "執(zhí)行超時(shí)蠢沿,請(qǐng)確定退出"
        temp = BeginThread(exitSub)
    Else    
        If zhidaoTask = false Then 
            StopThread (zhidaoID)
            zhidaoID = BeginThread(signZhiDao_pro)
            TracePrint "重來(lái)一次"
        End If
    End If
        
    zhidaoTC = zhidaoTC + 1 
End Sub

Sub wenkuTimer_pro
    For (flush_time + 10)
        Delay 1000
        TracePrint "wenkuTimer"
    Next
    
//  TracePrint wenkuTC
    If wenkuTC >= (exit_time + 1) Then 
        info = "執(zhí)行超時(shí),請(qǐng)確定退出"
        temp = BeginThread(exitSub)
    
    Else 
        If wenkuTask = false Then 
            StopThread (wenkuID)
            wenkuID = BeginThread(signWenKu_pro)
            TracePrint "重來(lái)一次"
        End If
    End If
    
    wenkuTC = wenkuTC + 1
End Sub


//判斷是否執(zhí)行完畢線程
Sub isDone
    Do While True
        If wenku Then 
            If wenkuTask Then 
                If zhidao Then 
                    If zhidaoTask Then 
                        Exit Do
                    End If
                Else 
                    Exit Do
                End If
            End If
        End If
        TracePrint "wenku: " & wenku
        TracePrint "wenkuTask: " & wenkuTask
        Delay 3000
    Loop
    
    info = "執(zhí)行完畢,請(qǐng)確定退出"
    temp = BeginThread(exitSub)
End Sub


// 開(kāi)啟退出程序線程
Sub exitSub
    StopThread (zhidaoID)
    StopThread (wenkuID)
    StopThread (zhidaoTCID)
    StopThread (wenkuTCID)
    MessageBox (info)
    
    temp = BeginThread(closeSign) //關(guān)閉百度簽到
    temp = BeginThread(closeRunner) //關(guān)閉Runner(腳本執(zhí)行器)
End Sub

Sub closeSign
    Call Lib.系統(tǒng).結(jié)束進(jìn)程("我的百度簽到.exe")
End Sub


Sub closeRunner
    Call Lib.系統(tǒng).結(jié)束進(jìn)程("Runner.exe")
End Sub

//點(diǎn)擊進(jìn)入百度知道頁(yè)面(目的去截圖)
Event myWindow.zhidao_btn.Click
    myWindow.WebBrowser.Url = zhidaoAD
End Event

//點(diǎn)擊進(jìn)入百度文庫(kù)頁(yè)面(目的去截圖)
Event myWindow.wenku_btn.Click
    myWindow.WebBrowser.Url = wenkuAD
End Event

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市洪添,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雀费,老刑警劉巖干奢,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異盏袄,居然都是意外死亡忿峻,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)貌矿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)炭菌,“玉大人,你說(shuō)我怎么就攤上這事逛漫『诘停” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵酌毡,是天一觀的道長(zhǎng)克握。 經(jīng)常有香客問(wèn)我,道長(zhǎng)枷踏,這世上最難降的妖魔是什么菩暗? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮旭蠕,結(jié)果婚禮上停团,老公的妹妹穿的比我還像新娘。我一直安慰自己掏熬,他們只是感情好佑稠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著旗芬,像睡著了一般舌胶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疮丛,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天幔嫂,我揣著相機(jī)與錄音,去河邊找鬼誊薄。 笑死履恩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的暇屋。 我是一名探鬼主播似袁,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了昙衅?” 一聲冷哼從身側(cè)響起扬霜,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎而涉,沒(méi)想到半個(gè)月后著瓶,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡啼县,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年材原,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片季眷。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡余蟹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出子刮,到底是詐尸還是另有隱情威酒,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布挺峡,位于F島的核電站葵孤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏橱赠。R本人自食惡果不足惜尤仍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狭姨。 院中可真熱鬧宰啦,春花似錦、人聲如沸饼拍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惕耕。三九已至,卻和暖如春诫肠,著一層夾襖步出監(jiān)牢的瞬間司澎,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工栋豫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挤安,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓丧鸯,卻偏偏與公主長(zhǎng)得像蛤铜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理围肥,服務(wù)發(fā)現(xiàn)剿干,斷路器,智...
    卡卡羅2017閱讀 134,665評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,180評(píng)論 25 707
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程穆刻,因...
    小菜c閱讀 6,426評(píng)論 0 17
  • type = models.CharField(max_length=20, verbose_name='類(lèi)型')
    wangtieshan閱讀 1,126評(píng)論 0 0
  • 阿念和阿書(shū)閱讀 253評(píng)論 1 3