精易论坛

标题: 目录_取运行目录W GetModuleFileNameExW GetModuleFileNameExW [打印本页]

作者: 琪诺兔    时间: 2021-11-27 21:19
标题: 目录_取运行目录W GetModuleFileNameExW GetModuleFileNameExW
本帖最后由 琪诺兔 于 2021-11-27 21:21 编辑
  
子程序名返回值类型公开备 注
目录_取运行目录W字节集 取当前被执行的易程序文件所处的Unicode目录。
变量名类 型静态数组备 注
局_缓冲区字节集 
局_返回值整数型 
局_缓冲区 = 取空白字节集 (512)
局_返回值 = GetModuleFileNameExW (GetCurrentProcess (), 0, 局_缓冲区, 512)
返回 (选择 (局_返回值 > 0, 取字节集左边 (局_缓冲区, 倒找字节集 (局_缓冲区, { 92, 0 }, )) + { 0, 0, 0, 0 }, {  }))
  
DLL命令名返回值类型公开备 注
GetCurrentProcess整数型 取当前进程伪句柄
DLL库文件名:
kernel32.dll
在DLL库中对应命令名:
GetCurrentProcess
参数名类 型传址数组备 注

  
DLL命令名返回值类型公开备 注
GetModuleFileNameExW整数型 _进程取全路径名
DLL库文件名:
Psapi.dll
在DLL库中对应命令名:
GetModuleFileNameExW
参数名类 型传址数组备 注
hProcess整数型
hModule整数型
lpFilename字节集
nSize整数型




补充内容 (2021-11-30 13:24):
缓冲区长度和取出长度相同,是我的错
实际上U编码的长度应该是单字符占用两个字节,我自己用文本宽度不会超过256,
所以我设置了取出缓冲相同

补充内容 (2021-11-30 13:26):
这是一个严重的问题,如果你实际取出的长度大于256那么会导致程序崩溃,
解决方案就是将缓冲区尺寸*2或设置为1024
作者: 大司命    时间: 2021-11-27 22:27

我以为跟精易模块不一样!结果调用的方法一样,就是申请的长度错了,整整少了一半,容易崩溃,然后就会感觉莫名其妙的~


作者: 凉城o    时间: 2021-11-28 00:57
666666666666666
作者: fjgh    时间: 2021-11-28 08:52
感谢分享
作者: leige0921    时间: 2021-11-28 09:23
666666666666666
作者: xjshuaishuai    时间: 2021-11-28 09:28
感谢分享!
作者: kantal    时间: 2021-11-28 10:09
感谢分享!
作者: 琪诺兔    时间: 2021-11-28 17:09
大司命 发表于 2021-11-27 22:27
我以为跟精易模块不一样!结果调用的方法一样,就是申请的长度错了,整整少了一半,容易崩溃, ...

嗯,我自己用文本宽度不会超过256个字所以就没考虑兼容性,不过精易模块我用在9.35里面没有W命令
作者: 点点丶滴滴    时间: 2021-11-29 04:29
感谢分享,很给力!~
作者: shuaier    时间: 2021-11-29 15:00
感谢分享
作者: AnyPopup    时间: 2021-11-29 17:47
我一般都是直接2048*2+2的缓冲区
作者: 趣冉科技    时间: 2022-1-4 21:28
感谢楼主分享,支持一下~~!!!
作者: 趣冉科技    时间: 2022-1-4 21:28
感谢楼主分享,支持一下~~!!!
作者: szy2870    时间: 2023-1-13 21:40
请问这个api与易的取运行目录有什么区别吗?还是会减少误报呢?





欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4