设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 3272|回复: 5
收起左侧

易语言调用DLL API实现检测系统中是否已安装易语言 并自动获取易语言安装路径

[复制链接]
发表于 2018-6-4 09:44:37 | 显示全部楼层 |阅读模式

  1. 正在编译现行程序
  2. 正在检查重复名称...
  3. 正在预处理现行程序
  4. 正在进行名称连接...
  5. 正在统计需要编译的子程序
  6. 正在编译...
  7. 正在生成主程序入口代码
  8. 程序代码编译成功
  9. 正在封装易格式目的代码
  10. 开始运行被调试程序
  11. * 易语言安装路径:E:\Program Files (x86)\e\
  12. 被调试易程序运行完毕
复制代码


  1. .版本 2
  2. .支持库 eAPI
  3. .程序集 程序集1
  4. .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
  5. _临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
  6. 返回 (0)  ' 可以根据您的需要返回任意数值
  7. .子程序 _临时子程序
  8. .局部变量 易语言安装路径, 文本型
  9. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  10. 易语言安装路径 = 取易语言安装路径 ()
  11. .如果 (易语言安装路径 = “”)
  12.     输出调试文本 (“系统中可能未安装易语言。”)
  13. .否则
  14.     输出调试文本 (“易语言安装路径:” + 易语言安装路径)
  15. .如果结束

  16. .子程序 取易语言安装路径, 文本型, 公开, 成功返回易语言安装路径,失败返回空文本
  17. .局部变量 进程信息, 进程信息, , "0"
  18. .局部变量 计数, 整数型
  19. .局部变量 路径, 文本型
  20. .局部变量 易语言路径, 文本型
  21. 进程信息 = 取系统进程列表 ()
  22. .计次循环首 (取数组成员数 (进程信息), 计数)
  23.     路径 = 取进程路径 (进程信息 [计数].进程标识符)
  24.     .如果真 (取文本右边 (路径, 6) = “\e.exe” 且 文件是否存在 (路径))
  25.         易语言路径 = 取文本左边 (路径, 取文本长度 (路径) - 5)
  26.         .如果真 (是否为易语言安装路径 (易语言路径))
  27.             返回 (易语言路径)
  28.         .如果真结束

  29.     .如果真结束
  30. .计次循环尾 ()
  31. 返回 (“”)
  32. .子程序 取进程路径, 文本型
  33. .参数 进程号, 整数型
  34. .局部变量 系统目录, 文本型
  35. .局部变量 全路径名, 文本型
  36. .局部变量 进程句柄, 整数型
  37. 系统目录 = 取空白文本 (255)
  38. GetSystemDirectoryA (系统目录, 255)
  39. 进程句柄 = OpenProcess (1040, 0, 进程号)
  40. 全路径名 = 取空白文本 (255)
  41. .如果真 (GetModuleFileNameExA (进程句柄, 0, 全路径名, 255) ≠ 0)
  42.     全路径名 = 子文本替换 (全路径名, “\??\”, “”, , , 真)
  43.     .如果真 (到小写 (取文本左边 (全路径名, 12)) = “\systemroot\”)
  44.         全路径名 = 子文本替换 (全路径名, “\systemroot\”, 系统目录, , , 假)
  45.     .如果真结束
  46.     返回 (全路径名)
  47. .如果真结束
  48. 返回 (“”)
  49. .子程序 是否为易语言安装路径, 逻辑型
  50. .参数 易语言安装路径, 文本型, , 结尾不需要斜杠
  51. .判断开始 (文件是否存在 (易语言安装路径 + “e.exe”) = 假)
  52.     返回 (假)
  53. .判断 (文件是否存在 (易语言安装路径 + “clr”) = 假)
  54.     返回 (假)
  55. .判断 (文件是否存在 (易语言安装路径 + “lib”) = 假)
  56.     返回 (假)
  57. .判断 (文件是否存在 (易语言安装路径 + “linux”) = 假)
  58.     返回 (假)
  59. .判断 (文件是否存在 (易语言安装路径 + “sdk”) = 假)
  60.     返回 (假)
  61. .判断 (文件是否存在 (易语言安装路径 + “tools”) = 假)
  62.     返回 (假)
  63. .默认
  64. .判断结束
  65. 返回 (真)

  66. .版本 2
  67. .DLL命令 GetSystemDirectoryA, 整数型, "kernel32", "GetSystemDirectoryA"
  68.     .参数 lpBuffer, 文本型
  69.     .参数 nSize, 整数型
  70. .DLL命令 OpenProcess, 整数型, "kernel32", "OpenProcess"
  71.     .参数 dwDesiredAccess, 整数型
  72.     .参数 bInheritHandle, 整数型
  73.     .参数 dwProcessId, 整数型
  74. .DLL命令 GetModuleFileNameExA, 整数型, "psapi.dll", "GetModuleFileNameExA"
  75.     .参数 arg_01
  76.     .参数 arg_02
  77.     .参数 arg_03, 文本型
  78.     .参数 arg_04
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-3-29 08:30 , Processed in 0.592034 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表