您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“易語言如何實現截圖”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“易語言如何實現截圖”這篇文章吧。
DLL命令表
.版本 2 .DLL命令 DecodePictureFile, 整數型, "PsyQrDcd", "DecodePictureFile" .參數 strFilePath, 文本型 .DLL命令 DecodePictureFileRect, 整數型, "PsyQrDcd", "DecodePictureFileRect" .參數 strFilePath, 文本型 .參數 lngLeftX, 整數型 .參數 lngTopY, 整數型 .參數 lngRightX, 整數型 .參數 lngBottomY, 整數型 .DLL命令 DecodeGrayScaleArray, 整數型, "PsyQrDcd", "DecodeGrayScaleArray" .參數 byData, 字節型, 傳址 .參數 lngWidth, 整數型 .參數 lngHeight, 整數型 .DLL命令 DecodeBinaryArray, 整數型, "PsyQrDcd", "DecodeBinaryArray" .參數 byData, 字節型, 傳址 .參數 lngWidth, 整數型 .參數 lngHeight, 整數型 .DLL命令 GetDecodeDataString, 文本型, "PsyQrDcd", "GetDecodeDataString" .參數 lngIndex, 整數型 .DLL命令 GetDecodeDataByteArray, 整數型, "PsyQrDcd", "GetDecodeDataByteArray" .參數 lngIndex, 整數型 .DLL命令 GetDecodeVersion, 整數型, "PsyQrDcd", "GetDecodeVersion" .參數 lngIndex, 整數型 .DLL命令 GetDecodeLevel, 整數型, "PsyQrDcd", "GetDecodeLevel" .參數 lngIndex, 整數型 .DLL命令 GetDecodeMaskingNo, 整數型, "PsyQrDcd", "GetDecodeMaskingNo" .參數 lngIndex, 整數型 .DLL命令 GetConcatenationInfo, 整數型, "PsyQrDcd", "GetConcatenationInfo" .參數 lngIndex, 整數型 .參數 lngSeqNo, 整數型, 傳址 .參數 byCheckDigit, 字節型, 傳址 .DLL命令 GetSymbolePosition, 整數型, "PsyQrDcd", "GetSymbolePosition" .參數 lngIndex, 整數型 .參數 lngPosition, 整數型, 傳址 .DLL命令 SetDecodeSymbolCount, , "PsyQrDcd", "SetDecodeSymbolCount" .參數 lngCount, 整數型 .DLL命令 SetDecodeEffectLevel, , "PsyQrDcd", "SetDecodeEffectLevel" .參數 lngLevel, 整數型 .DLL命令 SetBrightnessBorder, , "PsyQrDcd", "SetBrightnessBorder" .參數 byBorder, 字節型 .DLL命令 SetMinimumModuleSize, , "PsyQrDcd", "SetMinimumModuleSize" .參數 bySize, 字節型 .DLL命令 FreeAllocateMemory, , "PsyQrDcd", "FreeAllocateMemory" .DLL命令 API_MultiByteToWideChar_utf8, 整數型, , "MultiByteToWideChar" .參數 CodePage, 整數型 .參數 dwFlags, 整數型 .參數 lpMultiByteStr, 字節集 .參數 cchMultiByte, 整數型 .參數 lpWideCharStr, 字節集 .參數 cchWideChar, 整數型 .DLL命令 API_WideCharToMultiByte_utf8, 整數型, "kernel32", "WideCharToMultiByte", , 將通配符映像為多字節 .參數 CodePage, 整數型 .參數 dwFlags, 整數型 .參數 lpWideCharStr, 字節集 .參數 cchWideChar, 整數型 .參數 lpMultiByteStr, 字節集 .參數 cchMultiByte, 整數型 .參數 lpDefaultChar, 整數型 .參數 lpUsedDefaultChar, 整數型 .DLL命令 API_WideCharToMultiByte, 整數型, "kernel32", "WideCharToMultiByte", , 將通配符映像為多字節 .參數 CodePage, 整數型 .參數 dwFlags, 整數型 .參數 lpWideCharStr, 字節集 .參數 cchWideChar, 整數型 .參數 lpMultiByteStr, 文本型 .參數 cchMultiByte, 整數型 .參數 lpDefaultChar, 文本型 .參數 lpUsedDefaultChar, 整數型 .DLL命令 CreateWaitableTimerA, 整數型, , "CreateWaitableTimerA", 公開, CreateWaitableTimerA 程序延時 .參數 lpTimerAttributes, 整數型 .參數 bManualReset, 邏輯型 .參數 lpTimerName, 整數型 .DLL命令 SetWaitableTimer, 整數型, , "SetWaitableTimer", 公開, SetWaitableTimer .參數 hTimer, 整數型 .參數 pDueTime, 程序延時 .參數 lPeriod, 整數型 .參數 pfnCompletionRoutine, 整數型 .參數 lpArgToCompletionRoutine, 整數型 .參數 fResume, 邏輯型 .DLL命令 MsgWaitForMultipleObjects, 整數型, , "MsgWaitForMultipleObjects", 公開, MsgWaitForMultipleObjects .參數 nCount, 整數型 .參數 pHandles, 整數型, 傳址 .參數 fWaitAll, 邏輯型 .參數 dwMilliseconds, 整數型 .參數 dwWakeMask, 整數型 .DLL命令 CloseHandle, 邏輯型, "kernel32", "CloseHandle", 公開, CloseHandle關閉一個內核對象。其中包括文件、文件映射、進程、線程、安全和同步對象等。涉及文件處理時,這個函數通常與vb的close命令相似。應盡可能的使用close,因為它支持vb的差錯控制。注意這個函數使用的文件句柄與vb的文件編號是完全不同的 非零表示成功,零表示失敗。會設置GetLastError .參數 對象句柄, 整數型, , 欲關閉的一個對象的句柄; .DLL命令 GetInputState, 整數型, "user32", "GetInputState", 公開, 用法,如果真(我的處理事件()≠0),處理事件() 比系統自帶的"處理事件"比3倍以上
自定義數據類型
.版本 2 .數據類型 程序延時 .成員 成員_時間, 長整數型, , , 占用8個字節
全局變量表
.版本 2 .支持庫 BmpOperate .全局變量 a, 字節集 .全局變量 x .全局變量 y .全局變量 s, 邏輯型 .全局變量 動畫物體1 .全局變量 動畫物體2 .全局變量 w, 位圖 .全局變量 w1, 位圖 .全局變量 解碼結果, 文本型
常量數據表
.版本 2 .常量 QRD_ERROR_SYMBLE_NOT_FOUND, "0" .常量 QRD_ERROR_FILE_NOT_FOUND, "-1" .常量 QRD_ERROR_READ_FAULT, "-2" .常量 QRD_ERROR_BAD_FORMAT, "-3" .常量 QRD_ERROR_SHARING_VIOLATION, "-4" .常量 QRD_ERROR_NOT_ENOUGH_MEMORY, "-5" .常量 常量1 .常量 常量2, "“"C:\Users\Administrator\Desktop\二維碼讀取\qrcode.exe" "%1"”"
截圖程序集的代碼
.版本 2 .支持庫 iext2 .支持庫 BmpOperate .支持庫 exui .程序集 截圖窗口程序集 .子程序 _截圖窗口_創建完畢 截圖動畫物體.趨向色 = #灰色 截圖動畫物體.趨向程度 = 50 動畫物體1 = 背景動畫框.創建物體 (截圖動畫物體, 0, 0, 真, ) 動畫物體2 = 背景動畫框.創建物體 (動畫物體2, 0, 0, 真, ) a = 快照 (, , ) 背景動畫框.置圖片 (動畫物體1, a, ) w.載入數據 (a) 截圖窗口.移動 (0, 0, 取屏幕寬度 (), 取屏幕高度 ()) 背景動畫框.移動 (0, 0, 截圖窗口.寬度, 截圖窗口.高度) 截圖窗口.可視 = 真 .子程序 _背景動畫框_鼠標左鍵被按下, 邏輯型 .參數 橫向位置, 整數型 .參數 縱向位置, 整數型 .參數 功能鍵狀態, 整數型 s = 真 x = 橫向位置 y = 縱向位置 .子程序 _背景動畫框_鼠標左鍵被放開, 邏輯型 .參數 橫向位置, 整數型 .參數 縱向位置, 整數型 .參數 功能鍵狀態, 整數型 s = 假 .如果真 (寫到文件 (取運行目錄 () + “\2wm.bmp”, w1.取位圖數據 ())) 截圖窗口.可視 = 假 解碼結果 = 解碼 (取運行目錄 () + “\2wm.bmp”) _啟動窗口.主窗口.可視EX = 真 _啟動窗口.激活 () 顯示信息 (解碼結果) .如果真結束 銷毀 () .子程序 _背景動畫框_鼠標位置被移動, 邏輯型 .參數 橫向位置, 整數型 .參數 縱向位置, 整數型 .參數 功能鍵狀態, 整數型 .局部變量 x1 .局部變量 y1 .局部變量 c, 整數型 .如果真 (s) x1 = 橫向位置 - x y1 = 縱向位置 - y .如果真 (x1 < 1) x1 = 0 .如果真結束 .如果真 (y1 < 1) y1 = 0 .如果真結束 w1.創建 (x1, y1, 24, #白色) w.復制到 (x, y, x1, y1, w1, 0, 0, ) .計次循環首 (x1, c) w1.置某點顏色 (c, 0, #紅色) w1.置某點顏色 (c, y1 - 1, #紅色) .計次循環尾 () .計次循環首 (y1, c) w1.置某點顏色 (0, c, #紅色) w1.置某點顏色 (x1 - 1, c, #紅色) .計次循環尾 () 背景動畫框.置物體位置 (動畫物體2, x, y, ) 背景動畫框.置圖片 (動畫物體2, w1.取位圖數據 (), ) .如果真結束
解碼程序集的代碼
.版本 2 .支持庫 spec .程序集 解碼程序集 .程序集變量 lngRectLeft, 整數型 .程序集變量 lngRectTop, 整數型 .程序集變量 lngRectRight, 整數型 .程序集變量 lngRectBottom, 整數型 .程序集變量 blnEnableSetRect, 邏輯型 .子程序 解碼, 文本型 .參數 strFilePath, 文本型 .局部變量 intOldPointer, 整數型 .局部變量 lngResult, 整數型 .局部變量 strResult, 文本型 .局部變量 i, 整數型 .局部變量 lngCount, 整數型 .局部變量 lngSeqNo, 整數型 .局部變量 byCheckDigit, 字節型 .局部變量 lngPosition, 整數型, , "8" .如果 (blnEnableSetRect) lngResult = DecodePictureFileRect (strFilePath, lngRectLeft, lngRectTop, lngRectRight, lngRectBottom) .否則 lngResult = DecodePictureFile (strFilePath) .如果結束 .如果 (lngResult ≥ 1) .變量循環首 (0, lngResult - 1, 1, i) strResult = strResult + “——————————————————————” + #換行符 strResult = strResult + “已解碼數據 ” + 到文本 (i + 1) strResult = strResult + “ [模型版本: ” + 到文本 (GetDecodeVersion (i)) strResult = strResult + “, 等級: ” .判斷開始 (GetDecodeLevel (i) = 0) strResult = strResult + “L(7%)” .判斷 (GetDecodeLevel (i) = 1) strResult = strResult + “M(15%)” .判斷 (GetDecodeLevel (i) = 2) strResult = strResult + “Q(25%)” .判斷 (GetDecodeLevel (i) = 3) strResult = strResult + “H(30%)” .默認 .判斷結束 lngCount = GetConcatenationInfo (i, lngSeqNo, byCheckDigit) .如果真 (lngCount > 0) strResult = strResult + “, 綜合:” + 到文本 (lngSeqNo + 1) + “/” + 到文本 (lngCount) strResult = strResult + “(CD” + 取十六進制文本 (byCheckDigit \ 16) + 取十六進制文本 (byCheckDigit % 16) + “H)” .如果真結束 strResult = strResult + “]” + #換行符 strResult = strResult + “——————————————————————” + #換行符 調試輸出 (UTF8_轉_ANSI (到字節集 (GetDecodeDataString (i)))) strResult = strResult + UTF8_轉_ANSI (到字節集 (GetDecodeDataString (i))) + #換行符 + #換行符 lngResult = GetSymbolePosition (i, lngPosition [1]) strResult = strResult + “符號位置:” + “(” + 到文本 (lngPosition [1]) + “, ” + 到文本 (lngPosition [2]) + “)-” + “(” + 到文本 (lngPosition [3]) + “, ” + 到文本 (lngPosition [4]) + “)-” + “(” + 到文本 (lngPosition [5]) + “, ” + 到文本 (lngPosition [6]) + “)-” + “(” + 到文本 (lngPosition [7]) + “, ” + 到文本 (lngPosition [8]) + “)” strResult = strResult + #換行符 + #換行符 .變量循環尾 () FreeAllocateMemory () .否則 .判斷開始 (lngResult = #QRD_ERROR_SYMBLE_NOT_FOUND) strResult = “未找到 QR 代碼符號。” .判斷 (lngResult = #QRD_ERROR_FILE_NOT_FOUND) strResult = “文件未找到!” .判斷 (lngResult = #QRD_ERROR_READ_FAULT) strResult = “讀取文件時發生錯誤。” .判斷 (lngResult = #QRD_ERROR_BAD_FORMAT) strResult = “無法讀取此格式文件。” .判斷 (lngResult = #QRD_ERROR_SHARING_VIOLATION) strResult = “共享沖突,無法讀取文件。” .判斷 (lngResult = #QRD_ERROR_NOT_ENOUGH_MEMORY) strResult = “內存不足。” .默認 .判斷結束 .如果結束 調試輸出 (strResult) 返回 (strResult) .子程序 UTF8_轉_ANSI, 文本型, 公開 .參數 utf8字節集, 字節集 返回 (Unicode_轉_ANSI (UTF8_轉_Unicode (utf8字節集))) .子程序 UTF8_轉_Unicode, 字節集 .參數 utf8字節集, 字節集 .局部變量 len, 整數型, , , 單位: Word .局部變量 Unicode字節集, 字節集 .局部變量 ll ll = 取字節集長度 (utf8字節集) len = API_MultiByteToWideChar_utf8 (65001, 0, utf8字節集, ll, { }, 0) Unicode字節集 = 取空白字節集 (len × 2) API_MultiByteToWideChar_utf8 (65001, 0, utf8字節集, ll, Unicode字節集, len × 2) 返回 (Unicode字節集) .子程序 Unicode_轉_ANSI, 文本型 .參數 Unicode字節集, 字節集 .局部變量 ansi_len, 整數型, , , 單位: Word .局部變量 unicode_len .局部變量 ansi, 文本型 unicode_len = 取字節集長度 (Unicode字節集) ÷ 2 ansi_len = API_WideCharToMultiByte (936, 0, Unicode字節集, unicode_len, ansi, 0, “”, 0) ansi = 取空白文本 (ansi_len) API_WideCharToMultiByte (936, 0, Unicode字節集, unicode_len, ansi, ansi_len, “”, 0) 返回 (ansi) .子程序 程序延時, 邏輯型, , 不占用cpu,窗口不卡死,不影響其它代碼執行 .參數 參_延時間隔, 整數型, 可空, 1000毫秒 = 1秒 留空為無限等待 .參數 參_延時單位, 整數型, 可空, 默認為毫秒 0=毫秒 1=秒 2=分鐘 3=小時 .局部變量 局_時間句柄, 整數型 .局部變量 局_時間, 程序延時 .判斷開始 (參_延時單位 = 0 且 是否為空 (參_延時間隔)) 參_延時間隔 = 5000 × 60 × 60 參_延時單位 = 5000 × 60 × 60 .判斷 (參_延時單位 = 0) 參_延時單位 = 1 .判斷 (參_延時單位 = 1) 參_延時單位 = 1000 .判斷 (參_延時單位 = 2) 參_延時單位 = 1000 × 60 .判斷 (參_延時單位 = 3) 參_延時單位 = 1000 × 60 × 60 .默認 .判斷結束 局_時間.成員_時間 = -10 × 參_延時間隔 × 1000 × 參_延時單位 局_時間句柄 = CreateWaitableTimerA (0, 假, 0) SetWaitableTimer (局_時間句柄, 局_時間, 0, 0, 0, 假) .判斷循環首 (MsgWaitForMultipleObjects (1, 局_時間句柄, 假, -1, 255) ≠ 0) 系統處理事件 () .判斷循環尾 () CloseHandle (局_時間句柄) 返回 (真) .子程序 系統處理事件 .如果真 (GetInputState () ≠ 0) 處理事件 () .如果真結束
二維碼識別的代碼
.版本 2 .支持庫 exui .支持庫 iext2 .程序集 啟動窗口程序集 .程序集變量 命令行, 文本型, , "0" .子程序 __啟動窗口_創建完畢 .局部變量 path, 文本型 path = 取運行目錄 () + “\PsyQrDcd.dll” .如果真 (文件是否存在 (path) = 假) 寫到文件 (path, #PsyQrDcd) .如果真結束 取命令行 (命令行) .如果真 (取數組成員數 (命令行) > 0) 解碼結果 = 解碼 (命令行 [1]) 顯示信息 (解碼結果) .如果真結束 初始化注冊右鍵按鈕 () .子程序 _截圖識別按鈕_左鍵單擊 主窗口.可視EX = 假 .如果真 (是否已創建 (截圖窗口) = 假) 載入 (截圖窗口, , 假) .如果真結束 截圖窗口.背景動畫框.置物體位置 (動畫物體2, -2000, -2000, ) .子程序 _注冊右鍵按鈕_左鍵單擊 .如果 (注冊項是否存在 (#根類, “*\shell\QRCode\command\”)) 刪除注冊項 (#根類, “*\shell\QRCode\command”) 刪除注冊項 (#根類, “*\shell\QRCode”) .否則 .如果 (寫注冊項 (#根類, “*\shell\QRCode\”, “識別二維碼”) 且 寫注冊項 (#根類, “*\shell\QRCode\command\”, 取運行目錄 () + “\” + 取執行文件名 () + “ %1”)) 顯示信息 (“注冊成功”) .否則 顯示信息 (“注冊失敗”) 刪除注冊項 (#根類, “*\shell\QRCode\command”) 刪除注冊項 (#根類, “*\shell\QRCode”) .如果結束 .如果結束 初始化注冊右鍵按鈕 () .子程序 顯示信息 .參數 信息, 文本型 .參數 是否復制, 邏輯型, 可空 信息框EX (主窗口.圖標, “解碼結果 - 已復制到剪輯版”, , 信息, , { “確認” }, 0, 取窗口句柄 (), , , 5000, , ) .如果真 (是否復制) 置剪輯板文本 (解碼結果) .如果真結束 .子程序 __啟動窗口_將被銷毀 主窗口.銷毀 () .子程序 初始化注冊右鍵按鈕 .如果 (注冊項是否存在 (#根類, “*\shell\QRCode\command\”)) 注冊右鍵按鈕.標題 = “注銷右鍵” .否則 注冊右鍵按鈕.標題 = “注冊右鍵” .如果結束
運行結果:
以上是“易語言如何實現截圖”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。