上个帖子没截图,易语言这个API 为何转换会出现参数错误?
麻烦管理删除上个帖子。没有截图火山,无法知道错误,这个帖子重新发布下易语言:
CreateProcessAsUserA (0, road, 命令行, 0, 0, 0, 524288, 0, start, si, pi)
.版本 2
.DLL命令 CreateProcessAsUserA, 逻辑型, "advapi32.dll", "CreateProcessAsUserA"
.参数 hToken, 整数型, , 0
.参数 lpApplicationName, 文本型, , 0
.参数 lpCommandLine, 文本型, , 0
.参数 lpProcessAttributes, 整数型, , 0
.参数 lpThreadAttributes, 整数型, , 0
.参数 bInheritHandles, 整数型, , 0
.参数 dwCreationFlags, 整数型, , 0
.参数 lpEnvironment, 整数型, , 0
.参数 lpCurrentDirectory, 文本型, , 0
.参数 lpStartupInfo, STARTUPINFOEX, , 0
.参数 lpProcessInformation, PROCESS_INFORMATION, , 0
这样没有任何问题。测试了用。
C++中:
EXTENDED_STARTUPINFO_PRESENT也就是易语言的第七个参数524288,测试也没问题
这样也没问题。
在火山中截图:
、
其中第七个参数如果改为EXTENDED_STARTUPINFO_PRESENT也就二十524288 那么下面的lpStartupInfo这个参数必须为STARTUPINFOEX结构体
结果发现在火山中调用:
创建进程_新 (0, 0, 取字节集指针 (文本到字节集 (命令行)), 0, 0, 假, 524288, 0, 0, si, pi)
出现参数错误。
如果把524288改为0,就可以创建,没有问题,一切正常。但为啥改为524288就出现参数错误,我需要524288也就是API中第七个参数调用EXTENDED_STARTUPINFO_PRESENT
这个 参数在C++ release X64平台测试和易语言X86测试都没任何问题。
请求管理能指导,或者帮忙写一个。
参数 dwCreationFlags 用整数,其他看不出问题
另外就是使用之前,需要先对 si 这个变量赋值:
si.StartupInfo.cb = 取结构数据尺寸 (STARTUPINFOEX) Xelloss0618 发表于 2022-6-6 10:15
参数 dwCreationFlags 用整数,其他看不出问题
另外就是使用之前,需要先对 si 这个变量赋值:
si.StartupI ...
已经按照你说的用整数了。si.StartupInfo.cb = 取结构数据尺寸 (STARTUPINFOEX) 这个我之前已经用上,但现在改为整数 还是显示参数错误,只能将524288改为0才可以运行,大佬,请求帮忙调试下这个API @飞翔的企鹅 @创世魂 管理们 sss啥 发表于 2022-6-6 16:45
已经按照你说的用整数了。si.StartupInfo.cb = 取结构数据尺寸 (STARTUPINFOEX) 这个我之前已经用上,但 ...
我之前是测试过了能成功执行,不过刚才也发现了命令行参数的一个坑
文本到字节集并没有加上结束0字符,所以也是错的。
其实也可以直接用取文本指针,不过需要给一个文本型变量。
我直接把文件传上来吧
Xelloss0618 发表于 2022-6-6 17:41
我之前是测试过了能成功执行,不过刚才也发现了命令行参数的一个坑
文本到字节集并没有加上结束0字符,所 ...
您好,大佬,我这免费版没有取结构数据尺寸 只有取数据类型尺寸 我用的易语言的cb=68 应该也一样吧 sss啥 发表于 2022-6-6 19:58
您好,大佬,我这免费版没有取结构数据尺寸 只有取数据类型尺寸 我用的易语言的cb=68 应该也一样吧 ...
好家伙,没有这个命令的是很老的火山了,个人版和免费版能用的命令是完全一样的,去官方下载最新版吧
结构体在32位和64位的长度不一样 Xelloss0618 发表于 2022-6-6 20:04
好家伙,没有这个命令的是很老的火山了,个人版和免费版能用的命令是完全一样的,去官方下载最新版吧
结 ...
谢谢大佬 解决了。 sss啥 发表于 2022-6-6 21:09
谢谢大佬 解决了。
共享一下代码吧,借鉴一下 xuezhq 发表于 2022-6-8 17:59
共享一下代码吧,借鉴一下
就直接用的上面那个大佬提供的代码就解决了
页:
[1]