樂易模塊源碼
❶ 怎麼用易語言製作控制端和被控端
源碼已經上傳了,裡麵包含模塊以及常式,所以有點貴。。。如果不想付財富值,我有源碼:
控制端:
.版本 2
.支持庫 iext
.程序集 窗口程序集_啟動窗口
.程序集變數 數據_程序集, 位元組集, , , 儲存接受到得數據
.程序集變數 文件管理_當前目錄, 文本型, , , 儲存當前訪問的目錄
.程序集變數 服務管理_文件頭, 文本型
.子程序 _退出_被選擇
結束 ()
.子程序 __啟動窗口_創建完畢
動態標題 ()
.子程序 __啟動窗口_將被銷毀
' 移除皮膚 ()
.子程序 動態標題
置隨機數種子 ()
_啟動窗口.標題 = 字元 (取隨機數 (65, 90)) + 到文本 (取隨機數 (0, 10)) + 字元 (取隨機數 (65, 90)) + 到文本 (取隨機數 (0, 10)) + 字元 (取隨機數 (65, 90)) + 到文本 (取隨機數 (0, 10))
.子程序 _工具條1_被單擊
.參數 按鈕索引, 整數型
.判斷開始 (按鈕索引 = 12) ' 關於
載入 (窗口2, , 假)
.判斷 (按鈕索引 = 10) ' 退出
結束 ()
.判斷 (按鈕索引 = 2) ' 屏幕截圖
載入 (屏幕截圖, , 假)
.判斷 (按鈕索引 = 4) ' 視頻捕獲
載入 (視頻捕獲, , 假)
.默認
.判斷結束
.子程序 _伺服器1_客戶進入
.局部變數 temp, 文本型
temp = 伺服器1.取回客戶 ()
列表框1.插入項目 (列表框1.取項目數 (), temp, )
播放音樂 (「soundlogin.wav」, )
.子程序 _伺服器1_客戶離開
.局部變數 temp, 文本型
.局部變數 i
temp = 伺服器1.取回客戶 ()
.計次循環首 (列表框1.取項目數 (), i)
.如果真 (列表框1.取項目文本 (i - 1) = temp)
列表框1.刪除項目 (i - 1)
.如果真 (當前控制客戶 = temp)
播放音樂 (「soundoffline.wav」, )
當前控制客戶 = 「」
跳出循環 ()
.如果真結束
.如果真結束
.計次循環尾 ()
.子程序 _伺服器1_數據到達
.局部變數 temp, 位元組集
temp = 伺服器1.取回數據 ()
.如果真 (取位元組集右邊 (temp, 4) = 到位元組集 (「over」))
數據_程序集 = 數據_程序集 + 取位元組集左邊 (temp, 取位元組集長度 (temp) - 4)
輸出調試文本 (「已經接收到over : 」 + 到文本 (取位元組集長度 (數據_程序集)))
處理數據 (數據_程序集)
數據_程序集 = { }
返回 ()
.如果真結束
數據_程序集 = 數據_程序集 + temp
輸出調試文本 (「這里是臨時位元組 : 」 + 到文本 (取位元組集長度 (數據_程序集)))
返回 ()
' 以下為過期代碼.暫保留.......
' *** 縮略程序塊 ***
' ' 臨時測試區
' ' 輸出調試文本 (取位元組集右邊 (temp, 取位元組集長度 (temp) - 4))
' ' temp = 取位元組集右邊 (temp, 取位元組集長度 (temp) - 4)
' ' 輸出調試文本 (取位元組集長度 (temp))
' 返回 ()
' ' 測試完畢
.' 如果真 (取位元組集左邊 (temp, 4) = 到位元組集 (「over」)) ' 如果發送完畢
' 加入成員 (完整數據, 取位元組集右邊 (temp, 取位元組集長度 (temp) - 4))
' 輸出調試文本 (取數組成員數 (完整數據))
' 數據排序 (完整數據) ' 處理數據,進行排序校驗
' 清除數組 (完整數據) ' 清除數組,防止內存泄漏
' 返回 ()
.如果真結束
' 接受數據 (temp)
' temp = { }
' ' temp = 伺服器1.取回數據 () ' 取回數據,儲存到臨時變數
' ' ' 輸出調試文本 (取位元組集長度 (temp))
.' 如果真 (temp = 到位元組集 (「over」)) ' 如果發送完畢
' ' 數據排序 (完整數據) ' 處理數據,進行排序校驗
' ' 清除數組 (完整數據) ' 清除數組,防止內存泄漏
' ' 返回 ()
.如果真結束
' ' 長度 = 取位元組集長度 (temp) ' 得到數據長度
.' 如果真 (數據校驗 (temp, 長度) = 假) ' 效驗數據是否正確
' ' ' ' 發送數據 (伺服器1.取回客戶 (), 「錯誤」, 到文本 (取位元組集中間 (temp, 33, 36))) ' 如果錯誤,拒絕接受,返回序號.要求重發
' ' ' 輸出調試文本 (「MD5校驗出錯!」)
' ' ' 返回 ()
.如果真結束
' ' 調試輸出 (到文本 (取位元組集中間 (temp, 33, 4)))
' ' 加入成員 (完整數據, 取位元組集右邊 (temp, 長度 - 32)) ' 如果沒發送完畢.加入程序集變數等待下次數據
.子程序 _列表框1_列表項被選擇
當前控制客戶 = 列表框1.取項目文本 (列表框1.現行選中項)
.判斷開始 (選擇夾1.現行子夾 = 1) ' 系統信息
發送數據 (當前控制客戶, 「信息」, )
.默認
.判斷結束
.子程序 _選擇夾1_子夾被改變
.判斷開始 (選擇夾1.現行子夾 = 1) ' 系統信息
發送數據 (當前控制客戶, 「信息」, )
.默認
.判斷結束
.子程序 _遠程命令按鈕1_被單擊
.局部變數 命令, 文本型
命令 = 遠程命令組合框1.內容
發送數據 (當前控制客戶, 「命令」, 命令)
.子程序 _遠程命令組合框1_放開某鍵, 邏輯型
.參數 鍵代碼, 整數型
.參數 功能鍵狀態, 整數型
.如果真 (鍵代碼 = #回車鍵)
_遠程命令按鈕1_被單擊 ()
.如果真結束
.子程序 _遠程命令按鈕2_被單擊
.如果 (遠程命令按鈕2.標題 = 「連接」)
遠程命令按鈕2.標題 = 「斷開」
發送數據 (當前控制客戶, 「命令」, 「連接」)
.否則
遠程命令按鈕2.標題 = 「連接」
發送數據 (當前控制客戶, 「命令」, 「斷開」)
.如果結束
.子程序 _按鈕1_被單擊
發送數據 (當前控制客戶, 「文件」, 「disk」)
' 文件管理_當前目錄 = 文件管理_當前目錄 + 「c:」
.子程序 _文件管理超級列表框1_被雙擊, 邏輯型
.參數 橫向位置, 整數型
.參數 縱向位置, 整數型
.參數 功能鍵狀態, 整數型
.如果真 (文件管理超級列表框1.現行選中項 < 0)
返回 ()
.如果真結束
.如果真 (文件管理超級列表框1.取標題 (文件管理超級列表框1.現行選中項, ) = 「後退」 且 文件管理超級列表框1.現行選中項 = 0)
發送數據 (當前控制客戶, 「文件」, 文件管理_後退 (文件管理_當前目錄))
返回 ()
.如果真結束
文件管理_當前目錄 = 文件管理_當前目錄 + 文件管理超級列表框1.取標題 (文件管理超級列表框1.現行選中項, )
.如果真 (取文本右邊 (文件管理_當前目錄, 1) ≠ 「」)
文件管理_當前目錄 = 文件管理_當前目錄 + 「」
.如果真結束
輸出調試文本 (文件管理_當前目錄)
發送數據 (當前控制客戶, 「文件」, 文件管理_當前目錄)
.子程序 _按鈕2_被單擊
發送數據 (當前控制客戶, 「進程」, 「list」)
.子程序 _進程管理超級列表框1_右鍵單擊表項
彈出菜單 (進程管理菜單, , )
.子程序 _刷新列表_被選擇
發送數據 (當前控制客戶, 「進程」, 「list|」)
.子程序 _結束進程_被選擇
發送數據 (當前控制客戶, 「進程」, 「kill|」 + 進程管理超級列表框1.取標題 (進程管理超級列表框1.現行選中項, 1))
.子程序 _暫停進程_被選擇
發送數據 (當前控制客戶, 「進程」, 「stop|」 + 進程管理超級列表框1.取標題 (進程管理超級列表框1.現行選中項, 1))
.子程序 _恢復進程_被選擇
發送數據 (當前控制客戶, 「進程」, 「stat|」 + 進程管理超級列表框1.取標題 (進程管理超級列表框1.現行選中項, 1))
.子程序 _服務管理超級列表框1_右鍵單擊表項
.判斷開始 (服務管理超級列表框1.取標題 (服務管理超級列表框1.現行選中項, 4) = 「正在運行」)
服務菜單1.標題 = 「停止服務」
.判斷 (服務管理超級列表框1.取標題 (服務管理超級列表框1.現行選中項, 4) = 「已停止」)
服務菜單1.標題 = 「運行服務」
.默認
.判斷結束
彈出菜單 (服務管理菜單, , )
.子程序 _服務菜單1_被選擇
.如果 (服務菜單1.標題 = 「停止服務」)
發送數據 (當前控制客戶, 「服務」, 「exit」 + 服務管理超級列表框1.取標題 (服務管理超級列表框1.現行選中項, ))
.否則
發送數據 (當前控制客戶, 「服務」, 「erun」 + 服務管理超級列表框1.取標題 (服務管理超級列表框1.現行選中項, ))
.如果結束
.子程序 _暫停服務_被選擇
發送數據 (當前控制客戶, 「服務」, 「stop」 + 服務管理超級列表框1.取標題 (服務管理超級列表框1.現行選中項, ))
.子程序 _繼續服務_被選擇
發送數據 (當前控制客戶, 「服務」, 「reun」 + 服務管理超級列表框1.取標題 (服務管理超級列表框1.現行選中項, ))
.子程序 _刷新列表_服務_被選擇
.局部變數 temp, 文本型
.如果 (服務管理選擇框.選中 = 真)
temp = 「list2」 ' 驅動級
.否則
temp = 「list1」 ' 服務級
.如果結束
發送數據 (當前控制客戶, 「服務」, temp)
.子程序 文件管理_後退, 文本型
.參數 參數, 文本型, 參考
.局部變數 temp, 文本型
.局部變數 位置_, 整數型
.如果真 (取文本右邊 (參數, 1) = 「」)
參數 = 取文本左邊 (參數, 取文本長度 (參數) - 1)
.如果真結束
位置_ = 倒找文本 (參數, 「」, , 假)
參數 = 取文本左邊 (參數, 位置_)
.如果真 (參數 ≠ 「」)
返回 (參數)
.如果真結束
返回 (「disk」)
.子程序 _文件管理_刷新列表_被選擇
.如果真 (文件管理_當前目錄 = 「」)
發送數據 (當前控制客戶, 「文件」, 「disk」)
返回 ()
.如果真結束
發送數據 (當前控制客戶, 「文件」, 文件管理_當前目錄)
.子程序 _文件管理超級列表框1_右鍵單擊表項
彈出菜單 (文件管理菜單1, , )
.子程序 _下載_被選擇
.局部變數 文件名, 文本型
文件名 = 文件管理超級列表框1.取標題 (文件管理超級列表框1.現行選中項, )
.如果真 (取文本右邊 (文件管理_當前目錄, 1) ≠ 「」)
文件管理_當前目錄 = 文件管理_當前目錄 + 「」
.如果真結束
文件名 = 文件管理_當前目錄 + 文件名
發送數據 (當前控制客戶, 「下載」, 「下載」 + 文件名)
.子程序 _剪輯版按鈕1_被單擊
發送數據 (當前控制客戶, 「剪輯」, 「取文本」)
.子程序 _剪輯版按鈕2_被單擊
發送數據 (當前控制客戶, 「剪輯」, 「置文本」 + 剪輯版編輯框2.內容)
.子程序 _重命名_被選擇
.局部變數 文件名, 文本型
.局部變數 新文件名, 文本型
文件名 = 文件管理超級列表框1.取標題 (文件管理超級列表框1.現行選中項, )
.如果真 (取文本右邊 (文件管理_當前目錄, 1) ≠ 「」)
文件管理_當前目錄 = 文件管理_當前目錄 + 「」
.如果真結束
文件名 = 文件管理_當前目錄 + 文件名
輸入框 (「請輸入新的文件名」, 「輸入框」, 文件名, 新文件名, )
發送數據 (當前控制客戶, 「下載」, 「重命」 + 文件名 + 「|」 + 新文件名)
.子程序 _刪除文件_被選擇
.局部變數 文件名, 文本型
文件名 = 文件管理超級列表框1.取標題 (文件管理超級列表框1.現行選中項, )
.如果真 (取文本右邊 (文件管理_當前目錄, 1) ≠ 「」)
文件管理_當前目錄 = 文件管理_當前目錄 + 「」
.如果真結束
文件名 = 文件管理_當前目錄 + 文件名
發送數據 (當前控制客戶, 「下載」, 「刪除」 + 文件名)
被控端:
.版本 2
.支持庫 dp1
.程序集 功能處理
.程序集變數 取回命令, 文本型
.程序集變數 視頻捕獲臨時文件, 文本型
.子程序 執行命令
.參數 參數, 位元組集
.局部變數 命令, 文本型
命令 = 到文本 (參數)
.如果真 (命令 = 「斷開」)
匿名管道是否連接 = 假
.如果真 (控制台_斷開連接 ())
輸出調試文本 (「斷開匿名管道」)
.如果真結束
返回 ()
.如果真結束
.如果真 (匿名管道是否連接 = 真)
控制台_發送命令 (命令)
控制台_取回結果 (&取回命令回調函數)
返回 ()
.如果真結束
.如果真 (命令 = 「連接」)
匿名管道是否連接 = 真
控制台_連接 ()
控制台_取回結果 (&取回命令回調函數)
返回 ()
.如果真結束
發送數據 (「錯誤」, 到位元組集 (「控制台_無法執行操作」), )
' 匿名管道
.子程序 系統信息
.局部變數 CPU頻率, 整數型
.局部變數 CPU型號, 文本型
.局部變數 IE版本, 文本型
.局部變數 windows版本, 文本型
.局部變數 當前用戶, 文本型
.局部變數 計算機名, 文本型
.局部變數 系統信息, 類_取系統信息
.局部變數 發送, 文本型
.局部變數 解析度, 文本型
.局部變數 內存信息, 類_取內存信息
.局部變數 物理內存信息, 文本型
.局部變數 虛擬內存信息, 文本型
CPU頻率 = 系統信息.取CPU頻率 ()
CPU型號 = 系統信息.取CPU信息 ()
IE版本 = 系統信息.取IE版本 ()
windows版本 = 系統信息.取Windows版本 ()
當前用戶 = 系統信息.取當前用戶 ()
計算機名 = 系統信息.取計算機名 ()
解析度 = 到文本 (取屏幕寬度 ()) + 「*」 + 到文本 (取屏幕高度 ())
物理內存信息 = 到文本 (到整數 (內存信息.取可用物理內存 () ÷ 1024 ÷ 1024)) + 「MB/」 + 到文本 (到整數 (內存信息.取物理內存容量 () ÷ 1024 ÷ 1024)) + 「MB」
虛擬內存信息 = 到文本 (到整數 (內存信息.取可用虛擬內存 () ÷ 1024 ÷ 1024)) + 「MB/」 + 到文本 (到整數 (內存信息.取虛擬內存容量 () ÷ 1024 ÷ 1024)) + 「MB」
發送 = CPU型號 + 「|」 + 到文本 (CPU頻率) + 「|」 + 物理內存信息 + 「|」 + 虛擬內存信息 + 「|」 + windows版本 + 「|」 + IE版本 + 「|」 + 當前用戶 + 「|」 + 計算機名 + 「|」 + 解析度
發送數據 (「信息」, 到位元組集 (發送))
' 取系統信息
.子程序 屏幕截圖
.參數 參數, 位元組集
.局部變數 temp, 文本型
.局部變數 臨時數據, 位元組集
.局部變數 是否持續, 邏輯型
.如果真 (到文本 (參數) = 「」)
屏幕截圖發送 ()
返回 ()
.如果真結束
.如果真 (到文本 (參數) = 「ok」)
屏幕截圖發送 ()
返回 ()
.如果真結束
' 屏幕截圖
.子程序 屏幕截圖發送
發送數據 (「截圖」, 壓縮數據 (快照 (, , )), )
.子程序 文件管理
.參數 參數, 位元組集
.局部變數 命令, 文本型
.局部變數 文件名, 文本型
.局部變數 列表, 文本型
命令 = 到文本 (參數)
.如果真 (命令 = 「disk」)
發送數據 (「文件disk|」, 到位元組集 (取所有盤符 ()), )
返回 ()
.如果真結束
.如果真 (取文本右邊 (命令, 1) ≠ 「」)
命令 = 命令 + 「」
.如果真結束
文件名 = 尋找文件 (命令 + 「*.*」, #子目錄)
.判斷循環首 (文件名 ≠ 「」)
列表 = 列表 + 文件名 + 「|」
文件名 = 尋找文件 (, #子目錄)
.判斷循環尾 ()
文件名 = 尋找文件 (命令 + 「*.*」, )
.判斷循環首 (文件名 ≠ 「」)
列表 = 列表 + 文件名 + 「|」
文件名 = 尋找文件 (, )
.判斷循環尾 ()
發送數據 (「文件」, 到位元組集 (列表), )
.子程序 取回命令回調函數
.參數 指針, 整數型
取回命令 = 取回命令 + 指針到文本 (指針)
.如果真 (取文本右邊 (取回命令, 1) = 「>」)
發送數據 (「命令」, 到位元組集 (取回命令), )
取回命令 = 「」
.如果真結束
.子程序 進程管理
.參數 參數, 位元組集
.局部變數 命令, 文本型, , "0"
.局部變數 進程列表, 進程列表, , "0"
.局部變數 i, 整數型
.局部變數 temp, 文本型
命令 = 分割文本 (到文本 (參數), 「|」, )
.判斷開始 (命令 [1] = 「list」)
.如果真 (進程_取進程列表 (進程列表) = 假)
發送數據 (「錯誤」, 到位元組集 (「進程_取進程列表失敗!」))
返回 ()
.如果真結束
.計次循環首 (取數組成員數 (進程列表), i)
temp = temp + 進程列表 [i].名稱 + 「,」 + 到文本 (進程列表 [i].PID) + 「,」 + 進程列表 [i].路徑 + 「|」
.計次循環尾 ()
發送數據 (「進程」, 到位元組集 (temp), )
.判斷 (命令 [1] = 「stop」)
進程_掛起進程 (到整數 (命令 [2]))
.判斷 (命令 [1] = 「stat」)
進程_恢復進程 (到整數 (命令 [2]))
.判斷 (命令 [1] = 「kill」)
.默認
.判斷結束
.子程序 服務管理
.參數 參數, 位元組集
.局部變數 命令, 文本型
.局部變數 服務列表, 服務信息, , "0"
.局部變數 是否驅動, 邏輯型
.局部變數 i, 整數型
.局部變數 數據, 文本型
命令 = 到文本 (參數)
.如果 (取文本右邊 (命令, 1) = 到文本 (1))
是否驅動 = 真
.否則
是否驅動 = 假
.如果結束
.判斷開始 (取文本左邊 (命令, 4) = 「list」)
E_取服務列表 (是否驅動, 服務列表)
輸出調試文本 (是否驅動)
.計次循環首 (取數組成員數 (服務列表), i)
數據 = 數據 + 服務列表 [i].服務名稱 + 「,」
數據 = 數據 + 服務列表 [i].顯示名稱 + 「,」
數據 = 數據 + 服務列表 [i].服務描述 + 「,」
數據 = 數據 + 服務列表 [i].服務類型 + 「,」
數據 = 數據 + 服務列表 [i].服務狀態 + 「,」
數據 = 數據 + 服務列表 [i].啟動方式 + 「,」
數據 = 數據 + 服務列表 [i].登陸方式 + 「,」
數據 = 數據 + 服務列表 [i].進程PID + 「|」
.計次循環尾 ()
發送數據 (「服務」, 到位元組集 (數據), )
數據 = 「」
清除數組 (服務列表)
返回 ()
.判斷 (取文本左邊 (命令, 4) = 「exit」)
E_停止服務 (取文本右邊 (命令, 取文本長度 (命令) - 4))
返回 ()
.判斷 (取文本左邊 (命令, 4) = 「stop」)
E_暫停服務 (取文本右邊 (命令, 取文本長度 (命令) - 4))
返回 ()
.判斷 (取文本左邊 (命令, 4) = 「reun」)
E_繼續服務 (取文本右邊 (命令, 取文本長度 (命令) - 4))
返回 ()
.判斷 (取文本左邊 (命令, 4) = 「erun」)
E_運行服務 (取文本右邊 (命令, 取文本長度 (命令) - 4))
.默認
.判斷結束
.子程序 視頻捕獲
.參數 參數, 位元組集
.局部變數 命令, 文本型
命令 = 到文本 (參數)
.如果真 (命令 = 「stat」)
創建視頻窗口 (窗口1.分組框1.取窗口句柄 (), 300, 300)
處理事件 ()
開始捕獲 (600)
.計次循環首 (500, )
處理事件 ()
.計次循環尾 ()
視頻捕獲臨時文件 = 取臨時文件名 ()
視頻捕獲發送 ()
返回 ()
.如果真結束
.如果真 (命令 = 「ok」)
視頻捕獲發送 ()
返回 ()
.如果真結束
.如果真 (命令 = 「exit」)
停止捕獲 ()
返回 ()
.如果真結束
.子程序 視頻捕獲發送
.局部變數 temp, 位元組集
.如果真 (視頻抓圖 (視頻捕獲臨時文件) ≠ 0)
處理事件 ()
temp = 讀入文件 (視頻捕獲臨時文件)
發送數據 (「視頻」, 壓縮數據 (temp), )
temp = { }
.如果真結束
.子程序 文件下載
.參數 參數, 位元組集
.局部變數 文件路徑, 文本型
.局部變數 命令, 文本型
.局部變數 文本數組, 文本型, , "0"
命令 = 到文本 (取位元組集左邊 (參數, 4))
文件路徑 = 到文本 (取位元組集右邊 (參數, 取位元組集長度 (參數) - 4))
.判斷開始 (命令 = 「下載」)
發送數據 (「下載」, 壓縮數據 (讀入文件 (文件路徑)), )
.判斷 (命令 = 「重命」)
文本數組 = 分割文本 (文件路徑, 「|」, )
.如果真 (取數組成員數 (文本數組) ≥ 2)
文件更名 (文本數組 [1], 文本數組 [2])
.如果真結束
.判斷 (命令 = 「刪除」)
刪除文件 (文件路徑)
.默認
.判斷結束
.子程序 剪輯版操作
.參數 參數, 位元組集
.局部變數 命令頭, 文本型
命令頭 = 到文本 (取位元組集左邊 (參數, 6))
.判斷開始 (命令頭 = 「取文本」)
發送數據 (「剪輯」, 到位元組集 (「文本」 + 取剪輯板文本 ()), )
.判斷 (命令頭 = 「置文本」)
置剪輯板文本 (到文本 (取位元組集右邊 (參數, 取位元組集長度 (參數) - 10)))
.默認
.判斷結束
❷ 易語言 仿QQ聊天工具 或 聊天室 源碼
你好,
我有幾百套易語言源碼和模塊,歡迎大家交流,共同進步
隨時共享
這是我們易語言人自己的交流群:132157144 希望大家一起進步,本人隨時解答各類疑問
還不懂得話,繼續聯系
❸ 2016年旅遊網站源碼排行榜
在為你做旅遊網站源碼排行之前,先給你介紹一下什麼是旅遊網站源碼,旅遊網站源碼,也稱為旅遊源代碼。是指為編譯的文本代碼或一個網站的全部源代碼文件,是一系列人類可讀指令。你都把它理解為源文代碼,當前看到的這個網頁來說,其實它就是由一大堆的源碼組成,通過瀏覽器如Google、網路等瀏覽器或伺服器翻譯成我們現在所看見的樣子!這樣相對通俗的解釋你應該都懂吧!下面由是由筆者精心研究、收集、歸納的旅遊網站源碼,為你做一個優先順序排序,希望對你在選擇旅遊網站源碼的時候有所幫助。
特點:無
總結:網奇平台涉及的源碼系統較多,但是對每一個系統的開發都不夠深入,其中網奇E旅遊通旅遊網站源碼的模板風格及源碼都極為粗糙,ASP NET語言運行速度較PHP+Mysql緩慢,系統BUG較多,基本沒有源碼維護人員
以上信息希望可以幫助你,還望採納,感謝!
❹ 求QQ空間代碼`
代碼使用方法:1.點QQ空間里的自定義==》個人設置==》新建模塊.
2.把代碼復制進評論欄(去掉地址欄及圖片欄的 http://字樣)
3.提交.(ok了)
****************************************************************************************
天氣預報代碼:
<iframe name="I1" src="http://weather.qq.com/inc/ss150.htm" width="250" height="240">
</iframe>
****************************************************************************************
Flash代碼:(FLASH地址要以.swf結尾)
</textarea><embed src=』』http://你的Flash地址』』quality=high pluginspage=』』http://www.macromedia.com/shockw ... sion=shockwaveflash』』 type=』』application/x-shockwave-flash』』 width=330 height=240></embed>
透明FLASH:
</textarea><embed src=http://你的Flash特效地址 wmode=transparent style="position: absolute" width=380 height=270>
注:width=和height=後面的數字是填FLASH大小高矮度..
****************************************************************************************
背景音樂代碼:
</textarea><embed src=http://你的背景音樂地址 width=0 height=0 loop= true> (此代碼不顯播放器)
</textarea><embed src=http://你的背景音樂地址 width=2 height=2 loop= true> (此代碼顯播放器)
1.如何得到音樂地址...
首先打開網路音樂搜索 http://mp3..com
輸入歌名..格式(只能是MP3和WMA)→查找
找到歌曲..點試聽..
注意:要能聽見的..而且聽起來不卡的....!!!!(重要)
試聽里邊有個播放器..播放器右上方有個地址..
右鍵點擊地址...→復制快捷方式
進入音樂盒..點添加
把歌曲地址復制到這里..
添加好以後要在歌曲後邊的綠色加號上打勾才能自動播放..!(重要)
****************************************************************************************
視頻MTV代碼:(地址要以.rm/.wmv/.asf/.avi/.mpg結尾)
(播放器的大小可以自己調整代碼中的數值,只需改height =「高度」,width =「寬度」)
以.wmv或者.asf結尾:
</textarea><embed src=http://你的視頻文件地址 width=360 height=280 loop= true>
以.rm結尾:
</textarea><embed src=http://你的視頻文件地址 type=audio/x-pn-realaudio-plugin console=clip1 controls=ImageWindow height=124 width=180 autostart=true loop=true>
以.avi或者.mpg結尾:
</textarea><embed src="音樂源地址" border="0" width="320" height="240" type="application/x-mplayer2"></embed>
小技巧,想要當你的好友一登陸你的空間就能馬上聽到最新的音樂視聽嗎? 技巧在於代碼結尾加上wid, 如下
</textarea><embed src=http://你的音樂地址 width=360 height=280 wid>
****************************************************************************************
電台代碼:(地址要以.asp結尾的地址)
</textarea><embed src= http://你的電台地址 type=audio/x-pn-realaudio-plugin console=clip1 controls=ImageWindow height=124 width=180 autostart=true loop=true><br>
代碼
相關作用
<b>加粗</b>
使文字加粗
<i>斜體</i>
使文字傾斜
<u>加下劃線</u>
給文字加下劃線
<s>加刪除線</s>
給文字加刪除線
<pre>預設格式
令文件按照原始的排版方式顯示
*好用,省去了頻繁插入<br>與<p>的煩惱
****************************************************************************************
藝術字代碼:
發光文字代碼
</textarea><table style="FILTER: glow(color=#6699FF,direction=2)">
<font color=#ffffff size=2>要修改的文字</font>
</table>
其中color是陰影的顏色,可以配合網頁色調改變,direction是設置陰影的強度,font color是原字體的顏色。
浮雕的文字
</textarea><table style="FILTER: dropshadow(color=#6699FF, offx=1, offy=1, positive=1);">
<font color=#ffffff>要修改的文字</font>
</table>
其中color是陰影的顏色,可以配合網頁色調改變,positive是設置陰影的強度,offx和offy是設置的陰影和文字的距離,font color是原字體的顏色。
陰影的文字
</textarea><table style="FILTER: dropshadow(color=#cccccc, offx=2, offy=2, positive=2);">
<font color=#6CABE7 size=2>要修改的文字</font>
</table>
文本框字體
</textarea><TEXTAREA STYLE="font:12px;font-family:Verdana;color:#666666">輸入內容
注:字體(font-family)還可以選用Arial,Tahoma等等;color可自行設定
<tr> 表格列 border="5"邊框寬度為5像素,bordercolor="Purple"邊框顏色為紫色
<td> 表格欄 bgcolor="Green"表格背景顏色為綠色
****************************************************************************************
插入超鏈接 (請注意:如果該鏈接為惡意鏈接的話,騰訊會自動屏蔽,請大家不要亂用)
文字鏈接代碼 </textarea>點擊<a href=』』http://你要鏈接的地址』』 target=』』_blank』』>文字說明</a>
圖片鏈接代碼 </textarea><a href="你要鏈接的地址" title="文字說明",_blank>
****************************************************************************************
設為首頁/加入收藏代碼:
<a target=_top href=javascript:window.external.AddFavorite('http://q-zone.qq.com/client/?uin=313715638';;)>〖加入收藏〗</a>..<a href=# onClick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://q-zone.qq.com/client/?uin=378656256';;);">【設為首頁】</a>
****************************************************************************************
在主頁加入鍾表的代碼:
<embed src='時鍾的連接地址'quality=high pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash';; type='application/x-shockwave-flash' width=100(寬) height=100(高)></embed>
其中寬和高是 FLASH顯示出來的寬度和高度
把以上代碼放在新建版快的評論欄中,圖片地址和連接地址清空,什麼都不要留!
****************************************************************************************
滾動字:
這是代碼:
<marquee border="0" align="middle" scrolldelay="120">想說的字</marquee>
****************************************************************************************
其它代碼:
屏蔽右鍵代碼 </textarea><body oncontextmenu="return false"> (這條代碼可以防止日記源代碼輕易被盜取,推薦使用)
網頁無法另存代碼 </textarea><noscript><iframe src=*></iframe></noscript>
網頁透明代碼 </textarea><body background-color:transparent>
其他html代碼
****************************************************************************************
默林魔法老人代碼:
<body>
<SCRIPT>
<!--
function crml(nid)
{
try
{
nid=new ActiveXObject("Agent.Control.2");
nid.Connected = true;
nid.Characters.Load("");
return nid;
}
catch (err)
{
return false;
}
}
function chplay ()
{
if (ml=crml ("ml"))
{
var MerlinID;
var MerlinACS;
Merlin = ml.Characters.Character(MerlinID);
Merlin.MoveTo(200,200);
Merlin.Show();
Merlin.Play("Explain");
Merlin.Play("Announce");
Merlin.Speak("修改成您的語言");
Merlin.Play("Gestureright");
Merlin.Play("Pleased");
Merlin.Speak("修改成您的語言");
Merlin.Play("Idle1_1");
Merlin.Hide();
Merlin.MoveTo(600,300);
Merlin.Show();
Merlin.Play("Surprised");
Merlin.Speak("修改成您的語言");
Merlin.Play("Read");
Merlin.Speak("修改成您的語言");
Merlin.Play("Read")
Merlin.Play("GestureUp");
Merlin.Speak("修改成您的語言");
Merlin.Play("DontRecognize");
Merlin.Speak("修改成您的語言");
Merlin.Play("DontRecognize");
Merlin.Play("Greet");
Merlin.Speak("修改成您的語言");
Merlin.Play("Greet");
Merlin.Speak("修改成您的語言");
Merlin.Play("Greet");
Merlin.Hide();
}
}
//-->
</SCRIPT>
<SCRIPT>
<!--
chplay()
-->
</SCRIPT>
</body>
使用方法:
1.新建一個TXT文檔.
2.將代碼保存.
3.將TXT文檔上存到網上(我本來找到一個網站可以上傳的.但是現在封了!)
4.得到TXT文檔地址.
<iframe id="main" name="I8" frameBorder="0" width="0" scrolling="no" height="0" src="默林文本的連接地址"></iframe>
***************************************************************************************
用小號空間克隆自己的Q-ZONE提高人氣的辦法!(這個我試過.但驗證不出是真是假.)
大家是不是都想自己的花快快長大,天天踩啊踩啊真的好累啊!
但是自己的Q-ZONE只有一個網路地址,就象我的是http://378656256.q-zone.qq.com一樣,怎麼解決這個問題呢!
忽忽,昨天我在無意中發現了這個辦法,我們可以用自己的號去開通小號的空間,然後用小號的空間克隆大號的空間(鏡象),這樣你的Q-ZONE不是又多了一個網路地址嗎,忽忽,2個號拉起票來給一個號灌溉應該快點吧,要是你小號多的話不防克隆他10個8個的,忽忽!
克隆自己空間辦法如下:
開通自己小號空間,新建立一個版塊,在評論中插如以下代碼:
<iframe id="main" name="I8" frameBorder="0" width="0" scrolling="no" height="0" src="378656256.q-zone.qq.com"></iframe>
****************************************************************************************
代 碼
相關作用
<br>
換行
<p>一段文字</p>
段落
<bgcolor="#00FF00">
背景顏色(#00FF00為綠色)
-2N
<text="#0000FF"> -x.
字體顏色(#0000FF為藍色)
-zz
<p align="left">文字</p>
文字左對齊
<p align="center">文字</p>
文字居中
<p align="right">文字</p>
文字右對齊
****************************************************************************************
播放音樂代碼中的參數介紹
Autostart
是否在音樂下載完之後就自動播放。true 是,false 否
loop
是否自動反復播放。LOOP=2 表示重復兩次,true 是,false 否
hidden
是否完全隱藏控制畫面,true 為是,false 為否
-,-
STARTTIME="分:秒"
設定歌曲開始播放的時間。如 STARTTIME="00:30" 表示從第30秒處開始播放
WIDTH="整數" 和 HIGH="整數"
設定控制面板的高度和寬度。(若 HIDDEN="false")
---
ALIGN="center"
設定控制面板和旁邊文字的對齊方式,其值可以是 top、bottom、center、baseline、 left、right、texttop、middle、absmiddle、
absbottomCONTROLS="smallconsole"
設定控制面板的外觀。預設值是 console。
console 一般正常面板 smallconsole 較小的面板 playbutton
只顯示播放按鈕 pausecutton 只顯示暫停按鈕 stopbutton 只顯示停止按鈕 volumelever 只顯示音量調節按鈕
提示
關於QQ空間的一切代碼寫入日記內容區及標題欄都必須帶上標記</textarea>方能生效
任何標記皆由"<"及">"所圍住,如 <P>
標記名與小於號之間不能留有空白字元
參數只可加於起始標記中
在起始標記之標記名前加上符號"/"便是其終結標記,如 </font>
標記均成對出現,除了換行符<br>單獨使用以外
標記字母大小寫皆可
❺ 易語言如何獲取網頁源碼的並展示出來
.版本2
.支持庫RegEx
.支持庫internet
.支持庫iext
.子程序_按鈕1_被單擊
.局部變數網頁文本,文本型
.局部變數表達式,正則表達式
.局部變數搜索結果,搜索結果,,"0"
.局部變數計次變數,整數型
.局部變數文本,文本型
網頁文本=到文本(HTTP讀文件(編輯框1.內容))
網頁文本=子文本替換(網頁文本,#引號,「'」,0,,真)
網頁文本=到小寫(網頁文本)
透明標簽1.標題=取中間文(網頁文本,「<title>」,「</title>」)
表達式.創建(「meta(.*?)>」,假)
搜索結果=表達式.搜索全部(網頁文本)
.計次循環首(取數組成員數(搜索結果),計次變數)
文本=搜索結果[計次變數].取子匹配文本(網頁文本,1,)
.判斷開始(尋找文本(文本,「name='keywords'」,1,假)>0)
透明標簽2.標題=取中間文(文本,「content='」,「'」)
.判斷(尋找文本(文本,「name='description'」,1,假)>0)
透明標簽3.標題=取中間文(文本,「content='」,「'」)
.默認
.判斷結束
.計次循環尾()
.子程序取中間文,文本型
.參數全文,文本型
.參數左文,文本型
.參數右文,文本型
.局部變數位置,整數型
.局部變數總長度,整數型
.局部變數文本,文本型
總長度=取文本長度(全文)
位置=尋找文本(全文,左文,,假)
.如果真(位置<0)
返回(「」)
.如果真結束
位置=位置+取文本長度(左文)
文本=取文本中間(全文,位置,總長度)
總長度=取文本長度(文本)
位置=尋找文本(文本,右文,,假)-1
.如果真(位置<0)
返回(「」)
.如果真結束
文本=取文本中間(文本,1,位置)
返回(文本)
❻ 海南北大青鳥:五個方法讓你做更好的java單元測試
單元測試是我們在軟體開發過程中經常用到的一種軟體測試的方法,而今天我們就一起來了解一下,一個好的單元測試都是如何來編輯完成的。
1.使用框架來用於單元測試Java提供了若干用於單元測試的框架。
TestNG和JUnit是流行的測試框架。
JUnit和TestNG的一些重要功能:易於設置和運行。
支持注釋。
允許忽略或分組並一起執行某些測試。
支持參數化測試,即通過在運行時指定不同的值來運行單元測試。
通過與構建工具,如Ant,Maven和Gradle集成來支持自動化的測試執行。
EasyMock是一個模擬框架,是單元測試框架,如JUnit和TestNG的補充。
EasyMock本身不是一個完整的框架。
它只是添加了創建模擬對象以便於測試的能力。
例如,我們想要測試的一個方法可以調用從資料庫獲取數據的DAO類。
在這種情況下,EasyMock可用於創建返回硬編碼數據的MockDAO。
這使我們能夠輕松地測試我們意向的方法,而不必擔心資料庫訪問。
2.謹慎使用測試驅動開發!測試驅動開發(TDD)是一個軟體開發過程,在這過程中,在開始任何編碼之前,我們基於需求來編寫測試。
由於還沒有編碼,測試初會失敗。
然後寫入小量的代碼以通過測試。
然後重構代碼,直到被優化。
目標是編寫覆蓋所有需求的測試,而不是一開始就寫代碼,卻可能甚至都不能滿足需求。
TDD是偉大的,因為它導致簡單的模塊化代碼,且易於維護。
總體開發速度加快,容易發現缺陷。
此外,單元測試被創建作為TDD方法的副產品。
然而,TDD可能不適合所有的情況。
在設計復雜的項目中,專注於簡單的設計以便於通過測試用例,而不提前思考可能會導致巨大的代碼更改。
此外,TDD方法難以用於與遺留系統,GUI應用程序或與資料庫一起工作的應用程序交互的系統。
另外,測試需要隨著代碼的改變而更新。
因此,在決定採用TDD方法之前,應考慮上述因素,並應根據項目的性質採取措施。
3.測量代碼覆蓋率代碼覆蓋率衡量(以百分比表示)了在運行單元測試時執行的代碼量。
通常,高覆蓋率的代碼包含未檢測到的錯誤的幾率要低,因為其更多的源代碼在測試過程中被執行。
海南電腦培訓http://www.kmbdqn.cn/發現測量代碼覆蓋率的一些佳做法包括:使用代碼覆蓋工具,如Clover,Corbetura,JaCoCo或Sonar。
使用工具可以提高測試質量,因為這些工具可以指出未經測試的代碼區域,讓你能夠開發開發額外的測試來覆蓋這些領域。
❼ 求易語言鉤子注入dll及home呼出源碼
易語言鉤子DLL注入源碼及源碼說明2010-04-06 13:52[所有要使用到的API]
.版本 2
.DLL命令 LoadLibraryA, 整數型,"kernel32.dll","LoadLibraryA"
.參數 lpLibFileName, 文本型
.DLL命令 SetWindowsHookExA, 整數型, "user32.dll", "SetWindowsHookExA", 公開, SetWindowsHookEx
.參數 鉤子類型, 整數型, , idHook
.參數 回調函數地址, 整數型, , lpfn
.參數 實例句柄, 整數型, , hmod
.參數 線程ID, 整數型, , dwThreadId
.DLL命令 FreeLibrary, 整數型, "kernel32.dll", "FreeLibrary", , 釋放指定的動態鏈接庫,它們早先是用LoadLibrary ;API函數裝載的 非零表示成功,零表示失敗。會設置GetLastError
.參數 庫句柄, 整數型, , hLibMole,要釋放的一個庫句柄,在VB里使用只能用這個函數釋放那些由應用程序明確裝載的DLL。對LoadLibrary的每一次調用都應該有一個對應的FreeLibrary調用;
.DLL命令 UnhookWindowsHookEx, 整數型, "user32.dll", "UnhookWindowsHookEx", , UnhookWindowsHookEx
.參數 鉤子句柄, 整數型, , hHook
.DLL命令 CallNextHookEx, 整數型, "user32.dll", "CallNextHookEx", 公開, CallNextHookEx
.參數 鉤子句柄, 整數型, , hHook
.參數 代碼值, 整數型, , ncode
.參數 附加參數1, 整數型, , wParam
.參數 附加參數2, 整數型, 傳址, lParam
.DLL命令 GetProcAddress, 整數型, "kernel32.dll", "GetProcAddress", , 取進程路徑
.參數 模塊句柄, 整數型, , hMole
.參數 進程名稱, 文本型, , lpProcName
.DLL命令 GetCurrentThreadId, 整數型, "kernel32.dll", "GetCurrentThreadId"
.DLL命令 獲取特別文件夾位置_, 整數型, "shell32.dll", "SHGetSpecialFolderLocation"
.參數 窗口句柄, 整數型, , hwndOwner
.參數 文件夾位置, 整數型, , nFolder
.參數 結構, 項目標識符列表_, 傳址, pIdl
.DLL命令 從列表id取路徑_, 整數型, "shell32.dll", "SHGetPathFromIDListA", , $(b)
.參數 結構指針, 整數型, , pIdl
.參數 路徑, 文本型, 傳址, pszPath
.DLL命令 CallWindowProcA, 整數型, "user32.dll", "CallWindowProcA"
.參數 動態調用代碼, 位元組集, , 一定要用本人編寫的
.參數 子程序, 子程序指針, , 子程序指針
.參數 參數, 整數型, 數組, 為整數數組,參數1為成員1…類推;文本型和位元組集型(自定義結構)為指針
.參數 參數數目, 整數型, , 一定要和參數數組相符,不然會出錯
.參數 是否C調用, 整數型, , 真為cdecl調用方式,假為stdcall調用方式(即標准WINAPI方式)
[這里函數所有代碼和一個自定義類型,API代碼在左邊]
.版本 2
.程序集 程序集1
.程序集變數 臨時呼出熱鍵, 整數型
.程序集變數 臨時載入窗口, 窗口
.程序集變數 鉤子模塊句柄, 整數型, , "1000"
.程序集變數 鉤子句柄, 整數型, , "1000"
.程序集變數 鉤子IDx, 整數型
.程序集變數 x, 整數型
.程序集變數 鉤子句柄1, 整數型
.程序集變數 temp目錄, 文本型
.程序集變數 xxx, 整數型
.程序集變數 熱鍵鉤子句柄, 整數型
.程序集變數 第一次, 邏輯型
.子程序 調用_調用子程序, 整數型, 公開, 呼叫某個函數 可以傳入無限個參數 返回函數返回值
.參數 子程序指針, 子程序指針, , 指定函數
.參數 參數, 整數型, 可空 數組, 指定參數 可以不寫, 參數為數組 格式為 參數[1]=xxx 參數[2]=xxx 文本型或位元組集請用 轉換指針 格式2 加入成員(參數,xxx)
.局部變數 動態調用代碼, 位元組集
動態調用代碼 = { 85, 139, 236, 86, 139, 117, 16, 141, 78, 255, 133, 201, 124, 21, 139, 69, 12, 141, 4, 136, 65, 139, 16, 137, 85, 16, 255, 117, 16, 131, 232, 4, 73, 117, 242, 255, 85, 8, 137, 69, 12, 139, 69, 20, 133, 192, 116, 13, 141, 4, 181, 0, 0, 0, 0, 137, 69, 16, 3, 101, 16, 139, 69, 12, 94, 93, 194, 16, 0 }
返回 (CallWindowProcA (動態調用代碼, 子程序指針, 參數, 取數組成員數 (參數), 0))
.子程序 操作_取特定目錄, 文本型, 公開, 取特定的目錄(返回所要取的指定目錄名 無效返回空)
.參數 欲獲取目錄類型, 整數型, 可空, 0我的桌面 1臨時目錄 5我的文檔 6我的收藏夾 7我的啟動 11我的開始菜單 20系統字體 36Windows安裝目錄 37系統目錄 [99更多]
.局部變數 路徑, 文本型
.局部變數 標示結構, 項目標識符列表_
.局部變數 目錄類型, 整數型
.如果真 (欲獲取目錄類型 = 99)
輸出調試文本 (「0我的桌面 2我的程序 5我的文檔 6我的收藏夾 7我的啟動 8我最近的文檔 9我的發送到 11我的開始菜單 13我的音樂 14我的視頻 16我的桌面 20系統字體 22開始菜單組 23程序組 24啟動組 25桌面 31收藏夾 32我的瀏覽器臨時目錄 33我的Cookies 34我的歷史記錄 36Windows安裝目錄 37系統目錄 38文件安裝目錄 39我的圖片 40用戶目錄 41系統目錄 46文檔 47管理工具 48我的管理工具 53音樂 54圖片 55視頻」)
.如果真結束
.如果 (欲獲取目錄類型 = 1)
目錄類型 = 34
.否則
目錄類型 = 欲獲取目錄類型
.如果結束
獲取特別文件夾位置_ (0, 目錄類型, 標示結構)
路徑 = 取空白文本 (255)
從列表id取路徑_ (標示結構.結構大小, 路徑)
.如果真 (路徑 = 「」)
返回 (「」)
.如果真結束
.如果真 (欲獲取目錄類型 = 1)
路徑 = 子文本替換 (路徑, 「History」, 「Temp」, , , 真)
.如果真結束
返回 (路徑 + 「\」)
.子程序 注入_安裝鉤子DLL, 整數型, 公開, DLL注入 返回0=失敗 整數型 DLL介面(代碼值,參數1,參數2)
.參數 線程ID, 整數型, , -1 全局鉤子
.參數 DLL全名, 文本型, , DLL全名
.參數 DLL介面, 文本型, 可空, 默認 整數型 鉤子介面(代碼值,參數1,參數2)
.局部變數 臨時變數, 整數型
.局部變數 目錄, 文本型
.局部變數 窗口句柄, 整數型
.如果真 (是否為空 (DLL介面) = 真)
DLL介面 = 「鉤子介面」
.如果真結束
.如果真 (線程ID = 0)
返回 (0)
.如果真結束
.如果真 (線程ID = -1)
線程ID = 0
.如果真結束
鉤子IDx = 鉤子IDx + 1
鉤子模塊句柄 [鉤子IDx] = LoadLibraryA (DLL全名)
鉤子句柄 [鉤子IDx] = SetWindowsHookExA (3, GetProcAddress (鉤子模塊句柄 [鉤子IDx], DLL介面), 鉤子模塊句柄 [鉤子IDx], 線程ID)
目錄 = 操作_取特定目錄 (1)
寫配置項 (目錄 + 「ada.ini」, 「ada」, 「鉤子句柄」, 到文本 (鉤子句柄 [鉤子IDx]))
輸出調試文本 (鉤子IDx, 鉤子模塊句柄 [鉤子IDx], 鉤子句柄 [鉤子IDx])
返回 (鉤子IDx)
.版本 2
.子程序 注入_卸載鉤子DLL, 邏輯型, 公開
.參數 鉤子ID, 整數型, 可空, 卸載所有時無效
.參數 卸載所有, 邏輯型, 可空
.局部變數 xx, 整數型
.如果真 (卸載所有)
.如果真 (鉤子IDx > 0)
.計次循環首 (鉤子IDx, xx)
.如果真 (鉤子模塊句柄 [xx] ≠ 0)
FreeLibrary (鉤子模塊句柄 [xx])
UnhookWindowsHookEx (鉤子句柄 [xx])
.如果真結束
.計次循環尾 ()
.如果真結束
返回 (真)
.如果真結束
.如果真 (鉤子ID > 0)
.如果真 (鉤子模塊句柄 [鉤子ID] ≠ 0)
FreeLibrary (鉤子模塊句柄 [鉤子ID])
UnhookWindowsHookEx (鉤子句柄 [鉤子ID])
返回 (真)
.如果真結束
.如果真結束
返回 (假)
.子程序 注入_初始化鉤子DLL, 整數型, 公開, DLL用.
.參數 代碼值, 整數型
.參數 參數1, 整數型
.參數 參數2, 整數型
.參數 初始, 子程序指針
.局部變數 xxxx, 整數型
.如果真 (鉤子句柄1 = 0)
temp目錄 =操作_取特定目錄 (1)
鉤子句柄1 = 到整數 (讀配置項 (temp目錄 + 「ada.ini」, 「ada」, 「鉤子句柄」, ))
.如果真結束
.如果真 (第一次 = 假)
第一次 = 真
調用_調用子程序 (初始)
.如果真結束
返回 (CallNextHookEx (鉤子句柄1, 代碼值, 參數1, 參數2))
.子程序 注入_設置呼出窗口, 邏輯型, 公開
.參數 設置熱鍵, 整數型
.參數 呼出窗口, 窗口
臨時呼出熱鍵 = 設置熱鍵
臨時載入窗口 = 呼出窗口
熱鍵鉤子句柄 = SetWindowsHookExA (2, 到整數 (&呼出鍵介面), 0, GetCurrentThreadId ())
.如果真 (熱鍵鉤子句柄 > 0)
返回 (真)
.如果真結束
返回 (假)
.子程序 呼出鍵介面, 整數型
.參數 一, 整數型
.參數 二, 整數型
.參數 三, 整數型
.如果真 (一 = 0 且 二 = 臨時呼出熱鍵 且 三 > 0)
.如果 (是否已創建 (臨時載入窗口))
.如果 (臨時載入窗口.可視)
臨時載入窗口.可視= 假
.否則
臨時載入窗口.可視= 真
.如果結束
.否則
載入 (臨時載入窗口, , 假)
臨時載入窗口.Esc鍵關閉= 假
臨時載入窗口.最小化按鈕= 真
.如果結束
.如果真結束
返回 (CallNextHookEx (熱鍵鉤子句柄, 一, 二, 三))
.版本 2
.數據類型 項目標識符列表_, , ITEMIDLIST
.成員 結構大小, 整數型, , , cb
.成員 標識符長度, 位元組型, , "255", abID
此函數是用來調用指針函數的.就是CALL
取目錄用這個我就不解釋了
下面是源碼主要函數
函數解釋:
本函數參數1為要HOOK的線程ID,參數2為要注入的DLL名,參數3[可空]為DLL介面名字空則為"鉤子介面".
下面解釋是如何實現的:
1.首先使用LoadLibraryA獲取DLL模塊地址.
2.然後設置SetWindowsHookExA
參數一為HOOK類型,使用WH_GETMESSAGE(3) Hook來監視從GetMessage or PeekMessage函數返回息。
參數二為介面地址,就是說把消息返回轉接到的位置,當然我們這里所使用的是我們DLL所公開的那個函數
參數三為介面模塊的句柄即DLL的句柄(地址)
參數四為將要被HOOK的線程ID(0為全局HOOK,不推薦使用全局HOOK)
3.設置完後將鉤子句柄寫配置項到臨時目錄(後面將要使用).
說白了其實這個才是真正的介面(DLL里的介面只是在做轉接而已),
我先講這個函數是如何實現的(上面已經說了這才是真正的介面).
1,鉤子句柄是一個程序集變數,先判斷這個變數是否為0,如果等於0那麼就是說這個函數第一次被使用,
第一次使用將讀去上個函數寫在臨時目錄的鉤子句柄.
2.用一個邏輯變數(程序集變數或全局變數),來判斷這個消息鉤子是否第一次運行(為了防止後面調用
子程序被多次調用),是的話調用一個子程序(自己設置)
3.使用CallNextHookEx(呼叫下一個鉤子)把當前HOOK的信息在傳送回被HOOK的鉤子里,那個鉤子我們
就不用管了.
下來說下到底如何使用
首先在你的EXE程序里寫這個(我就不多說這是干嗎的了).
然後在DLL里寫上這個代碼(有人可能覺得眼熟,好像在什麼地方見過,對了這個代碼和
外掛作坊的鉤子注入差不多)
下來說明下按鍵呼出窗口的函數
用變數把當前參數存起來(主要方便介面調用)
1.為當前運行線程設置一個鍵盤鉤子
2.[介面]設置按鍵判斷,如果按下我們設置的鍵將呼出窗口,如果這個窗口沒創建將判斷創建,
如果已經創建再次按下則會隱藏,
載入後的窗口把用ESC關閉的屬性弄成假,不需要ESC關閉
3.最後就是再呼叫下以前的鉤子.
最後就是卸載鉤子DLL了.
判斷是否要卸載全部的鉤子,如果是就循環將現有鉤子DLL全部卸載.
不是就按著ID來卸載
卸載方法:
1.FreeLibrary就是卸載一個載入的DLL
2.UnhookWindowsHookEx乃是卸載這個HOOK
-.-OK了這就是 鉤子DLL注入,謝謝大家閱讀,如果看不明白,
❽ Python培訓課程哪家好
不同機構課程安排不同,每個人需求不一樣,選擇上也是存在差異,建議根據自身需求,實地體驗一下。
課程安排:
階段一:Python開發基礎
Python全棧開發與人工智慧之Python開發基礎知識學習內容包括:Python基礎語法、數據類型、字元編碼、文件操作、函數、裝飾器、迭代器、內置方法、常用模塊等。
階段二:Python高級編程和資料庫開發
Python全棧開發與人工智慧之Python高級編程和資料庫開發知識學習內容包括:面向對象開發、Socket網路編程、線程、進程、隊列、IO多路模型、Mysql資料庫開發等。
階段三:前端開發
Python全棧開發與人工智慧之前端開發知識學習內容包括:Html、CSS、JavaScript開發、Jquery&bootstrap開發、前端框架VUE開發等。
階段四:WEB框架開發
Python全棧開發與人工智慧之WEB框架開發學習內容包括:Django框架基礎、Django框架進階、BBS+Blog實戰項目開發、緩存和隊列中間件、Flask框架學習、Tornado框架學習、Restful API等。
階段五:爬蟲開發
Python全棧開發與人工智慧之爬蟲開發學習內容包括:爬蟲開發實戰。
階段六:全棧項目實戰
Python全棧開發與人工智慧之全棧項目實戰學習內容包括:企業應用工具學習、CRM客戶關系管理系統開發、路飛學城在線教育平台開發等。
階段七:數據分析
Python全棧開發與人工智慧之數據分析學習內容包括:金融量化分析。
階段八:人工智慧
Python全棧開發與人工智慧之人工智慧學習內容包括:機器學習、圖形識別、無人機開發、無人駕駛等。
階段九:自動化運維&開發
Python全棧開發與人工智慧之自動化運維&開發學習內容包括:CMDB資產管理系統開發、IT審計+主機管理系統開發、分布式主機監控系統開發等。
階段十:高並發語言GO開發
Python全棧開發與人工智慧之高並發語言GO開發學習內容包括:GO語言基礎、數據類型與文件IO操作、函數和面向對象、並發編程等。
❾ 軟體開發中,什麼是模塊化開發
軟體產品可以被看作是由一系列具有特定功能的組件組成,作為一個完整的系統也可以被分解成一系列功能模塊,這些模塊之間的相互作用就形成了系統的所有功能。
所謂模塊是指可組成系統的、具有某種確定獨立功能的半自律性的子系統,可以通過標準的界面和其他同樣的子系統按照一定的規則相互聯系而構成的更加復雜的系統。每個模塊的研發和改進都獨立於其他模塊的研發和改進,每個模塊所特有的信息處理過程都被包含在模塊的內部,如同一個「黑箱」,但是有一個或數個通用的標准界面與系統或其他模塊相互連接。
在軟體的模塊化開發過程中,把一個源代碼的結構分割成一個元系統和一系列的模塊。
元系統指的是一個能夠保持系統運轉的最小的系統。
模塊是一個較大系統的獨特的部件,它能夠由設計者獨立設計出來,同時又可以作為一個整體在系統中運轉。
把一個大系統切割成互相獨立的不同的小系統,可以使一些並不是經常見面的開發者減少必要的交流次數。
另外,一個舊版本的模塊可以被新版的模塊所替換,同時卻又不影響整個系統的運轉。
這樣,在新模塊中所增加的功能就可以及時在現存的系統中體現出來,同時也不需要更改系統中的其他模塊。
高度模塊化的源代碼結構給軟體開發者和使用者均帶來了極大的好處。
開發者可以對具有某種特定功能的模塊進行獨立開發而不需要花時間去協調與其他模塊之間的關系。
並且模塊化開發不僅允許模塊之間的水平開發,而且可以通過對類似模塊之間的創新和競爭(開發新的模塊或者對原有的模塊進行改進)充分改善系統的功能。
另外,作為最終的用戶來說,在安裝系統的時候可以就個人的需求與偏好選擇適合自己的模塊。
模塊化是復雜系統的一個共同特徵,模塊化的代碼結構是由鬆散的組件構成的,是對一個系統完全意義上的分割,而不像完全集成的代碼,各個組件之間存在很強的依賴關系,並不是完全通過界面來交換信息。
總結:
第一, 把一個系統分解成各個不同的子模塊,不同的開發者專注於對其中某一模塊的開發,一方面實現了勞動的分工,另一方面也提高了自由軟體開發的效率。基於模塊化的性質,每個模塊在開發出來以後都可以通過一個被稱作是內核的原系統進行信息交流,發揮整個模塊的功能,同時也並不會影響其他模塊功能的發揮。而且在各個不同的模塊整合在一起後,由於外部性的存在,會使整個系統增加的功能要超過該模塊本身的功能。在此過程中實現了價值的分割與整合。
第二, 對於開發者而言,基於模塊化的自由軟體開發具有更大的吸引力,其在參與開發過程中可以得到更高的期望收益。
第三, 在非模塊化的軟體開發過程中,存在著嚴重的「搭便車」現象,當一個開發者選擇參與開發,其餘的開發者就會選擇「搭便車」,最終會導致軟體的供給不足;在基於模塊化的開發過程中,所有的開發者都更傾向於參與開發不同的模塊,從而實現整個系統的開發。
MIS軟體開發中的組件模式開發比較復雜,主要的阻力不在代碼的實現過程中,因為這個工作通常只應該占據軟體開發工作量的30%,而對業務需求的深度剖析、業務子系統的劃分和業務組件的規劃會占據約40-50%的工作量。
這些工作體現在設計階段主要是對業務的廣度、深度分析,把業務領域的對象元素進行細化,將業務操作劃分為原子性功能,以此為基礎構成業務組件,進而形成模塊和子系統,同時業務操作之間的約束則需要邏輯化(代碼系統可識別的邏輯);在此過程中,原系統也就形成了,它便是在業務領域中必須的組件、模塊和子系統的集合;外延的組件在原系統上通過組合或熱差拔即能夠滿足不同規模、深度、特性的業務模式運轉。
❿ 求內網網頁天氣預報源代碼!
如果你的內網能接入互聯網,還分什麼內網外網,網上的調用代碼應該都可以用才對
如果內網不能接入互聯網,那你還是每天手動錄吧