易語言統計代碼行數與API的工具

今天小編就爲大家分享一篇關於易語言統計代碼行數與API的工具,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

DLL命令表

.版本 2
.DLL命令 FindWindowEx, 整數型, "user32", "FindWindowExA", , 在窗口列表中尋找與指定條件相符的第一個子窗口 找到的窗口的句柄。如未找到相符窗口,則返回零。會設置GetLastError
  .參數 hWnd1, 整數型, , 在其中查找子的父窗口。如設爲零,表示使用桌面窗口(通常說的頂級窗口都被認爲是桌面的子窗口,所以也會對它們進行查找)
  .參數 hWnd2, 整數型, , 從這個窗口後開始查找。這樣便可利用對FindWindowEx的多次調用找到符合條件的所有子窗口。如設爲零,表示從第一個子窗口開始搜索
  .參數 lpsz1, 文本型, , 欲搜索的類名。零表示忽略
  .參數 lpsz2, 文本型, , 欲搜索的類名。零表示忽略;
.DLL命令 PostMessage, 整數型, "user32", "PostMessageA", , 將一條消息投遞到指定窗口的消息隊列。投遞的消息會在Windows事件處理過程中得到處理。在那個時候,會隨同投遞的消息調用指定窗口的窗口函數。特別適合那些不需要立即處理的窗口消息的發送 如消息投遞成功,則返回TRUE(非零)。會設置GetLastError
  .參數 hwnd, 整數型, , 接收消息的那個窗口的句柄。如設爲HWND_BROADCAST,表示投遞給系統中的所有頂級窗口。如設爲零,表示投遞一條線程消息(參考PostThreadMessage)
  .參數 wMsg, 整數型, , 消息標識符
  .參數 wParam, 整數型, , 具體由消息決定
  .參數 lParam, 整數型, , 具體由消息決定;
.DLL命令 SendMessage, 整數型, "user32", "SendMessageA", , 調用一個窗口的窗口函數,將一條消息發給那個窗口。除非消息處理完畢,否則該函數不會返回。SendMessageBynum, ;  SendMessageByString是該函數的“類型安全”聲明形式 由具體的消息決定
  .參數 hwnd, 整數型, , 要接收消息的那個窗口的句柄
  .參數 wMsg, 整數型, , 消息的標識符
  .參數 wParam, 整數型, , 具體取決於消息
  .參數 lParam, 整數型, , 具體取決於消息;
.DLL命令 GetWindowText, 整數型, "user32", "GetWindowTextA", , 取得一個窗體的標題(caption)文字,或者一個控件的內容(在vb裏使用:使用vb窗體或控件的caption或text屬性) 複製到lpString的字串長度;不包括空中止字符。會設置GetLastError
  .參數 hwnd, 整數型, , 欲獲取文字的那個窗口的句柄
  .參數 lpString, 文本型, , 預定義的一個緩衝區,至少有cch+1個字符大小;隨同窗口文字載入
  .參數 cch, 整數型, , lp緩衝區的長度; 
.DLL命令 GetWindowTextLength, 整數型, "user32", "GetWindowTextLengthA", , 調查窗口標題文字或控件內容的長短(在vb裏使用:直接使用vb窗體或控件的caption或text屬性) 字串長度,不包括空中止字符
  .參數 hwnd, 整數型, , 想調查文字長度的窗口的句柄;
.DLL命令 IsWindow, 整數型, "user32", "IsWindow", , 判斷一個窗口句柄是否有效 非零表示成功,零表示失敗
  .參數 hwnd, 整數型, , 待檢查窗口的句柄; 
.DLL命令 GetClassName, 整數型, "user32", "GetClassNameA", , 爲指定的窗口取得類名 以字節數表示的類名長度;排除最後的空中止字符。零表示出錯。會設置GetLastError
  .參數 hwnd, 整數型, , 欲獲得類名的那個窗口的句柄
  .參數 lpClassName, 文本型, , 隨同類名載入的緩衝區。預先至少必須分配nMaxCount+1個字符
  .參數 nMaxCount, 整數型, , 由lpClassName提供的緩衝區長度;
.DLL命令 SetForegroundWindow, 整數型, "user32", "SetForegroundWindow", , 將窗口設爲系統的前臺窗口。這個函數可用於改變用戶目前正在操作的應用程序 非零表示成功,零表示失敗。會設置GetLastError
  .參數 hwnd, 整數型, , 帶到前臺的窗口; 
.DLL命令 SetFocus, 整數型, "user32", "SetFocus", , 設置鍵盤焦點 前一個擁有焦點的窗口的句柄
  .參數 hwnd, 整數型, , 準備接收焦點的窗口的句柄
.DLL命令 keybd_event, , "user32", "keybd_event", , 這個函數模擬了鍵盤行動 
  .參數 bVk, 字節型, , 欲模擬的虛擬鍵碼
  .參數 bScan, 字節型, , 鍵的OEM掃描碼
  .參數 dwFlags, 整數型, , 零;或設爲下述兩個標誌之一;KEYEVENTF_EXTENDEDKEY:指出是一個擴展鍵,而且在前面冠以0xE0代碼;KEYEVENTF_KEYUP:模擬鬆開一個鍵
  .參數 dwExtraInfo, 整數型, , 通常不用的一個值。api函數GetMessageExtraInfo可取得這個值。允許使用的值取決於特定的驅動程序; 
.DLL命令 IsIconic, 整數型, "user32", "IsIconic", , 判斷窗口是否已最小化 非零表示成功,零表示失敗
  .參數 hwnd, 整數型, , 待檢測窗口的句柄;
.DLL命令 MessageBox, 整數型, "user32", "MessageBoxA", , 建立消息框窗體 
  .參數 hwnd, 整數型
  .參數 lpText, 文本型
  .參數 lpCaption, 文本型
  .參數 wType, 整數型

常量數據表

.版本 2
.常量 易菜單命令_複製, "57634"
.常量 易菜單命令_粘貼, "57637"
.常量 易菜單命令_跳轉, "32793"
.常量 WM_COMMAND, "273"
.常量 WM_CHAR, "258", , //按下某鍵,並已發出WM_KEYDOWN, WM_KEYUP消息
.常量 WM_KEYDOWN, "256", , //按下一個鍵
.常量 WM_KEYFIRST, "256"
.常量 WM_KEYUP, "257", , //釋放一個鍵
.常量 EM_SETSEL, "177"
.常量 VK_CONTROL, "17"
.常量 VK_A, "65"
.常量 WM_LBUTTONDOWN, "513"
.常量 WM_LBUTTONDBLCLK, "515"
.常量 WM_LBUTTONUP, "514"
.常量 WM_MOUSEMOVE, "512"
.常量 KEYEVENTF_KEYUP, "2"
.常量 KEYEVENTF_EXTENDEDKEY, "1"
.常量 WM_SYSCOMMAND, "274"
.常量 SC_RESTORE, "61728"
.常量 EM_GETLINECOUNT, "186"

易語言代碼統計

此功能需要加載 樹型框操作類模塊 1.2

.版本 2
.程序集 窗口程序集1
.子程序 __啓動窗口_創建完畢
取易IDE ()
.子程序 __啓動窗口_尺寸被改變
IDE組合框.寬度 = 取用戶區寬度 () - IDE組合框.左邊 - 8
統計按鈕.左邊 = 取用戶區寬度 () - 統計按鈕.寬度 - 8
刷新按鈕.左邊 = 統計按鈕.左邊 - 統計按鈕.寬度 - 8
統計編輯框.移動 (, , 取用戶區寬度 () - 16, 取用戶區高度 () - 統計編輯框.頂邊 - 8)
.子程序 _刷新按鈕_被單擊
取易IDE ()
.子程序 _統計按鈕_被單擊
.局部變量 hWnd, 整數型
hWnd = IDE組合框.取項目數值 (IDE組合框.現行選中項)
.如果真 (IsWindow (hWnd) = 0)
  取易IDE ()
  MessageBox (取窗口句柄 (), “請選擇已打開的易IDE進行統計”, “提示”, 64)
  IDE組合框.獲取焦點 ()
  返回 ()
.如果真結束
統計易代碼 (hWnd)
.子程序 取易IDE
.局部變量 hWnd, 整數型
.局部變量 strText, 文本型
.局部變量 n, 整數型
IDE組合框.清空 ()
hWnd = FindWindowEx (0, 0, “ENewFrame”, 字符 (0))
.判斷循環首 (hWnd ≠ 0)
  n = GetWindowTextLength (hWnd) + 1
  strText = 取空白文本 (n)
  GetWindowText (hWnd, strText, n)
  IDE組合框.加入項目 (strText, hWnd)
  hWnd = FindWindowEx (0, hWnd, “ENewFrame”, 字符 (0))
.判斷循環尾 ()
.子程序 統計易代碼
.參數 hWndEFrame, 整數型
.局部變量 hTreeView, 整數型
.局部變量 hMDIClient, 整數型
.局部變量 hEdit, 整數型
.局部變量 樹型框, 樹型框句柄操作類
.局部變量 n
.局部變量 i
.局部變量 p
.局部變量 x
.局部變量 ApiP, 整數型
.局部變量 Api, 整數型
.局部變量 strText, 文本型
.局部變量 strCode, 文本型
.如果真 (IsWindow (hWndEFrame) = 0)
  返回 ()
.如果真結束
hTreeView = 查找程序數據樹型框 (hWndEFrame)
hMDIClient = 查找客戶區 (hWndEFrame)
ApiP = -1
連續賦值 (真, 刷新按鈕.禁止, 統計按鈕.禁止, IDE組合框.禁止)
統計標籤.標題 = “正在統計...”
統計編輯框.內容 = “”
處理事件 ()
.如果真 (hTreeView ≠ 0 且 hMDIClient ≠ 0)
  .如果真 (IsIconic (hWndEFrame) ≠ 0) ' 判斷窗口是否已最小化
    SendMessage (hWndEFrame, #WM_SYSCOMMAND, #SC_RESTORE, 0)
  .如果真結束
  SetForegroundWindow (hWndEFrame)
  處理事件 ()
  .如果真 (樹型框._初始化類 (hTreeView, 真))
    樹型框.置自動更新狀態 (假)
    n = 樹型框.數據_取項目數 ()
    .計次循環首 (n, i)
      p = 樹型框.數據_取父項目 (i - 1)
      .如果真 (p = 0)
        strText = 樹型框.數據_取項目文本 (i - 1)
        .如果真 (尋找文本 (“資源表|模塊引用表|窗口”, strText, , 假) = -1)
          統計標籤.標題 = “正在統計:” + strText
          處理事件 ()
          樹型框.動作_保證顯示 (i - 1)
          樹型框.數據_現行選中項_置 (i - 1)
          SendMessage (hWndEFrame, #WM_COMMAND, #易菜單命令_跳轉, 0)
          延時 (200)
          hEdit = 查找編輯區 (hMDIClient, strText)
          .如果真 (hEdit ≠ 0)
            SetFocus (hEdit)
            發送全選命令 (hEdit)
            置剪輯板文本 (“”)
            處理事件 ()
            延時 (200)
            SendMessage (hWndEFrame, #WM_COMMAND, #易菜單命令_複製, 0)
            strCode = strCode + 取剪輯板文本 () + #換行符
          .如果真結束
        .如果真結束
        .如果 (strText = “Dll命令”)
          ApiP = i - 1
        .否則
        .如果結束
      .如果真結束
      .如果真 (p = ApiP)
        Api = Api + 1
      .如果真結束
    .計次循環尾 ()
  .如果真結束
.如果真結束
處理易代碼 (strCode)
統計編輯框.內容 = strCode
置剪輯板文本 (“”)
n = 統計編輯框.發送信息 (#EM_GETLINECOUNT, 0, 0)
統計標籤.標題 = “共有代碼 ” + 到文本 (n) + “ 行”
.如果真 (Api > 0)
  統計標籤.標題 = 統計標籤.標題 + “,使用API ” + 到文本 (Api) + “ 個”
.如果真結束
SetForegroundWindow (取窗口句柄 ())
連續賦值 (假, 刷新按鈕.禁止, 統計按鈕.禁止, IDE組合框.禁止)
.子程序 處理易代碼
.參數 strCode, 文本型, 參考
.局部變量 n, 整數型
strCode = 子文本替換 (strCode, “.版本 2” + #換行符, “”, , , 真)
.判斷循環首 (尋找文本 (strCode, #換行符 + #換行符, , 假) ≠ -1)
  strCode = 子文本替換 (strCode, #換行符 + #換行符, #換行符, , , 真)
.判斷循環尾 ()
strCode = “.版本 2” + #換行符 + #換行符 + strCode
.子程序 發送全選命令
.參數 hWnd, 整數型
.局部變量 lParam
keybd_event (#VK_CONTROL, 0, 0, 0)
keybd_event (#VK_A, 0, 0, 0)
keybd_event (#VK_CONTROL, 0, #KEYEVENTF_KEYUP, 0)
keybd_event (#VK_A, 0, #KEYEVENTF_KEYUP, 0)
延時 (200)
.子程序 查找程序數據樹型框, 整數型
.參數 hWndEFrame, 整數型
.局部變量 hPrent, 整數型
.局部變量 hWnd, 整數型
.局部變量 List, 整數型, , "0"
.局部變量 ClassName, 文本型
.局部變量 樹型框, 樹型框句柄操作類
加入成員 (List, hWndEFrame)
.判斷循環首 (取數組成員數 (List) > 0)
  hPrent = List [1]
  刪除成員 (List, 1, 1)
  hWnd = FindWindowEx (hPrent, 0, 字符 (0), 字符 (0))
  .判斷循環首 (hWnd ≠ 0)
    加入成員 (List, hWnd)
    ClassName = 取空白文本 (255)
    GetClassName (hWnd, ClassName, 255)
    .如果真 (ClassName = “SysTreeView32”)
      .如果真 (樹型框._初始化類 (hWnd, 真))
        .如果真 (樹型框.數據_取項目文本 (0) = “程序數據”)
          返回 (hWnd)
        .如果真結束
      .如果真結束
    .如果真結束
    hWnd = FindWindowEx (hPrent, hWnd, 字符 (0), 字符 (0))
  .判斷循環尾 ()
.判斷循環尾 ()
返回 (0)
.子程序 查找客戶區, 整數型, , MDIClient
.參數 hWndEFrame, 整數型
.局部變量 hPrent, 整數型
.局部變量 hWnd, 整數型
.局部變量 List, 整數型, , "0"
.局部變量 ClassName, 文本型
.局部變量 樹型框, 樹型框句柄操作類
加入成員 (List, hWndEFrame)
.判斷循環首 (取數組成員數 (List) > 0)
  hPrent = List [1]
  刪除成員 (List, 1, 1)
  hWnd = FindWindowEx (hPrent, 0, 字符 (0), 字符 (0))
  .判斷循環首 (hWnd ≠ 0)
    加入成員 (List, hWnd)
    ClassName = 取空白文本 (255)
    GetClassName (hWnd, ClassName, 255)
    .如果真 (ClassName = “MDIClient”)
      返回 (hWnd)
    .如果真結束
    hWnd = FindWindowEx (hPrent, hWnd, 字符 (0), 字符 (0))
  .判斷循環尾 ()
.判斷循環尾 ()
返回 (0)
.子程序 查找編輯區, 整數型, , 在客戶區裏查找當前編輯的窗口
.參數 hMDIClient, 整數型
.參數 strWindowText, 文本型
.局部變量 hWnd, 整數型
.局部變量 strText, 文本型
.局部變量 ClassName, 文本型
.局部變量 n, 整數型
.局部變量 hPrent, 整數型
.局部變量 hAfx, 整數型
hWnd = FindWindowEx (hMDIClient, 0, 字符 (0), 字符 (0))
n = GetWindowTextLength (hWnd) + 1
strText = 取空白文本 (n)
GetWindowText (hWnd, strText, n)
.如果真 (尋找文本 (strText, strWindowText, , 假) ≠ -1)
  hPrent = FindWindowEx (hWnd, 0, 字符 (0), 字符 (0))
  .如果真 (hPrent ≠ 0)
    hWnd = FindWindowEx (hPrent, 0, 字符 (0), 字符 (0))
    .判斷循環首 (hWnd ≠ 0)
      ClassName = 取空白文本 (255)
      GetClassName (hWnd, ClassName, 255)
      .如果真 (取文本左邊 (ClassName, 4) = “Afx:”)
        hAfx = hWnd
        跳出循環 ()
      .如果真結束
      hWnd = FindWindowEx (hPrent, hWnd, 字符 (0), 字符 (0))
    .判斷循環尾 ()
  .如果真結束
.如果真結束
.如果真 (hAfx ≠ 0)
  hAfx = FindWindowEx (hAfx, 0, 字符 (0), 字符 (0))
.如果真結束
返回 (hAfx)

運行結果:

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對神馬文庫的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章