易语言统计代码行数与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)

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 易语言API取文本长度图文讲解

    windows API 应用之"lstrlen"的应用 用易语言取出文本长度的实例教程 1.新建一个易语言窗口程序 添加一个编辑框 和 按钮组件 2.添加需要取出长度的文本 如图中所示 编辑框中添加 "百度一下你就知道"文字 3.双击DLL命令 进入DLL编辑代码 4.新建DLL命令 写入以下代码 .版本 2 .DLL命令 lstrlen, 整数型, , "lstrlenA" .参数 lpString, 文本型 5.进入程序集 写出以下代码 我们

  • 易语言API热键监控实例

    在用易语言编写软件或者游戏辅助的时候,经常用到API热键监控这个功能,我们在下面分享给大家实例代码,直接复制可以测试下. AIP热键监控 .版本 2 .支持库 JY .子程序 监视热键2, 整数型, 公开, 成功返回热键ID,失败返回0. .参数 响应子程序, 子程序指针, , 热键被按下时要触发的子程序,该回调函数可有一个参数用来接收热键ID. .参数 键代码, 整数型, , 可以使用易语言中的键代码常量 .参数 功能键码, 整数型, 可空, 键码数值见常量,可多个相加成为组合键,留空或为0则

  • 易语言API助手使用方法

    易语言API助手它的唯一功能就是方便查询API函数命令,能够自动在程序中加入指定dll命令声明的向导程序. 1.先了解一下API,Application Programming Interface,应用程序编程接口,编程人员通过这个接口,可以调用系统某些软件或者硬件的功能! 2.易语言的API助手对API进行了分类,可以以英文或中文的形式查看,同时提供了中英文索引查找和一些例程! 3.我们可以通过易语言的工具---执行易向导,来导入需要的API助手中的函数! 4.选中API助手,然后就会自动打开

  • 易语言调用API函数监视目录与文件的代码

    DLL命令表 .版本 2 .DLL命令 GetPrivateProfileInt, 整数型, , "GetPrivateProfileIntA" .参数 lpAppName, 文本型 .参数 lpKeyName, 文本型 .参数 nDefault, 整数型 .参数 lpFileName, 文本型 .DLL命令 GetPrivateProfileString, 整数型, , "GetPrivateProfileStringA" .参数 lpAppName, 文本型 .

  • 易语言调用百度文字识别api方法

    现在百度ai特别强大,很多大公司都是调用百度的数据,那么对于习惯易语言的我们改怎么操作呢?今天以百度ai文字识别为例. 首先打开百度ai平台 注册或登录百度账号,进入控制台,选择文字识别 新建应用,获取appid和app key 选择技术文档,api文档 参考第一个调用方式,通过url调用 要获取token请参考相关链接 然后根据参数说明填写相关代码,最后结果如下: .版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 .子程序 _按钮1_被单击 .局

  • 易语言API高级技巧教学

    首先声明,本文的读者该卖是:具有相当的易言语基础的.能较熟练地把常用的的API从VB/C声明转换到易言语DLL命令的易言语喜欢者. 1,使用指针 易言语中出于安定.方便考虑,没有直接提供指针,这正在进行一些高级 纵时不是很方便,固然有一些第三方支撑库可以取出变量指针(比如我的eLib++ 注:该支撑库系Delphi开发,本人已开放源代 ,你可以到易言语下载区瞧瞧)但是仅仅为了这个 纵就带上一个支撑库不太值得.实在用一个API,加上一些技术就可以欺骗Windows和易言语,让它们报告你一个变量的指

  • 易语言统计代码行数与API的工具

    DLL命令表 .版本 2 .DLL命令 FindWindowEx, 整数型, "user32", "FindWindowExA", , 在窗口列表中寻找与指定条件相符的第一个子窗口 找到的窗口的句柄.如未找到相符窗口,则返回零.会设置GetLastError .参数 hWnd1, 整数型, , 在其中查找子的父窗口.如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找) .参数 hWnd2, 整数型, , 从这个窗口后开始查找.

  • python实现统计代码行数的方法

    本文实例讲述了python实现统计代码行数的方法.分享给大家供大家参考.具体实现方法如下: ''' Author: liupengfei Function: count lines of code in a folder iteratively Shell-format: cmd [dir] Attention: default file encode is utf8 and default file type is java-source-file. But users can customi

  • python 统计代码行数简单实例

     python 统计代码行数简单实例 送测的时候,发现需要统计代码行数 于是写了个小程序统计自己的代码的行数. #calclate_code_lines.py import os def afileline(f_path): res = 0 f = open(f_path) for lines in f: if lines.split(): res += 1 return res if __name__=='__main__': host = 'E:'+os.sep+'develop'+os.s

  • python实现统计代码行数的小工具

    一个用python实现的统计代码行数的小工具,供大家参考,具体内容如下 实现功能 计算出某一目录以及子目录下代码文件的行数 在计算代码的过程中,只对标准命名的文件进行统计,如[文件名.文件类型] 排除了以"#"开头的包含文件,宏定义等,如#include, #define, #pragma等 排除了c,cpp文件中的"//", "/-/"等的注释 排除了python文件中import, from 等开头的导入 使用方法 新建countLines.

  • PHP实现统计代码行数小工具

    本文实例为大家分享了PHP实现统计代码行数小工具,供大家参考,具体内容如下 为了方面统计编程代码行数,做了一个小工具. 自动统计指定目录以及目录下的所有文件. <?php class TotalCode { /** * 统计当前文件有多少行代码, * @return TotalCodeInfo */ public function totalByFile($fullFileName) { $fileContent = file_get_contents($fullFileName); $line

  • PHP统计代码行数的小代码

    本文实例为大家分享了PHP统计代码行数的具体代码,供大家参考,具体内容如下 想统计一下项目中一共有多少行代码,结果没找到什么好的工具,就自己写了一个. 效率不怎么样. <?php /** * Created by PhpStorm. * User: luyanfeng * Date: 16/7/12 * Time: 下午1:45 */ /** * @param $dir * @return int */ function countLine($dir) { $count = 0; if (is_

  • shell 命令统计代码行数的简单代码

    分享一个统计代码行的shell命令: find . "(" -name ".java" -or -name ".html" -or -name ".js" -or -name ".css" ")" -print | xargs wc -l 根据不同的项目类型,不同的目录,自行修改. 如果内容多,可以: find . "(" -name ".java"

  • idea统计代码行数Statistic的步骤详解

    idea统计代码行数可以用到插件:Statistic. 步骤: File→Settings 进入Plugins 点击Marketplace 搜索Statistic     安装蓝框标出的插件 重启idea后就可以看到效果了(图是拿的别人的,基本就是这效果) 如果没有下边的statistic图标,可在View-> Tool Windows中打开 注:Statistic对idea的版本有要求 我的idea版本是2019.1,直接安装后未发现图标,在View -> Tool Windows里也没有,

  • Intellij idea使用Statistic统计代码行数的方法

    一.安装Statistic 1.打开IDEA 2.打开settings进行设置 3.选择plugins,进行插件安装 4.搜索Statistic并安装 5.下载完成之后,重启IDEA,此时Statistic就安装好了 二.使用Statistic 1.安装好Statistic之后我们可以通过以下步骤 将Statistic插件的控制台展示出来 view -> Tool Windows -> Statistic 2.我们可以选中我们想统计的服务来计算java代码或者配置文件行数 三.遇到的问题 使用

  • PHP递归统计系统中代码行数

    本文实例为大家分享了PHP递归统计系统中代码行数的具体代码,供大家参考,具体内容如下 1.统计代码行数,必然用到的两个关键的知识点:函数递归以及文件读取. 函数递归无非就是在函数的代码中调用本身的函数名,以此形成递归循环 function A($param){ if('condition') A($param_son); else return $result; } 在文件读取中,有很多读取方式,采用了file()读取,按行读取,形成一个数组. $file_open = file($file);

随机推荐