服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 易语言 - 易语言统计代码行数与API的工具

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

2022-02-24 15:57易语言源码教程 易语言

今天小编就为大家分享一篇关于易语言统计代码行数与API的工具,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

DLL命令表

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
.版本 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, 整数型

常量数据表

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.版本 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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
.版本 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)

运行结果:

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

总结

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

延伸 · 阅读

精彩推荐
  • 易语言易语言关于程序进程和线程的基础知识

    易语言关于程序进程和线程的基础知识

    今天小编就为大家分享一篇关于易语言关于程序进程和线程的基础知识,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    三叶资源网6662022-02-24
  • 易语言易语言生成exe文件的方法

    易语言生成exe文件的方法

    在本篇内容中小编给大家分享的是关于易语言生成exe文件的方法知识点,需要的朋友们参考下。...

    易语言教程网14792022-03-01
  • 易语言易语言在画板中写出指定文本当画板中已满会自动滚屏

    易语言在画板中写出指定文本当画板中已满会自动滚屏

    今天小编就为大家分享一篇关于易语言在画板中写出指定文本当画板中已满会自动滚屏,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,...

    易语言帮助手册9092022-01-12
  • 易语言易语言获取指定磁盘的名称

    易语言获取指定磁盘的名称

    今天小编就为大家分享一篇关于易语言获取指定磁盘的名称,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来...

    易语言帮助手册12662022-01-04
  • 易语言一步一步跟我学易语言之关于变量

    一步一步跟我学易语言之关于变量

    今天小编就为大家分享一篇关于一步一步跟我学易语言之关于变量,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册10822021-06-17
  • 易语言易语言设置进度条边框样式的方法

    易语言设置进度条边框样式的方法

    今天小编就为大家分享一篇关于易语言设置进度条边框样式的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册4422022-01-20
  • 易语言一步一步跟我学易语言之第二个易程序菜单设计

    一步一步跟我学易语言之第二个易程序菜单设计

    今天小编就为大家分享一篇关于的一步一步跟我学易语言之第二个易程序菜单设计,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要...

    易语言帮助手册7092021-06-17
  • 易语言实例操作易语言载入窗口

    实例操作易语言载入窗口

    在本文中小编给大家整理的是关于易语言载入窗口的教程和步骤内容,需要的可以跟着学习下...

    易语言教程网19162022-03-02