递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 5575|回复: 9
打印 上一主题 下一主题

[视窗] 上个帖子没截图,易语言这个API 为何转换会出现参数错误?

[复制链接]

3

主题

27

帖子

111

积分

注册会员

Rank: 2

积分
111
跳转到指定楼层
楼主
发表于 2022-6-6 09:22:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
麻烦管理删除上个帖子。没有截图火山,无法知道错误,这个帖子重新发布下

易语言:
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测试都没任何问题。
请求管理能指导,或者帮忙写一个。
回复

使用道具 举报

26

主题

1901

帖子

6928

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6928
沙发
发表于 2022-6-6 10:15:03 | 只看该作者
参数 dwCreationFlags 用整数,其他看不出问题
另外就是使用之前,需要先对 si 这个变量赋值:
si.StartupInfo.cb = 取结构数据尺寸 (STARTUPINFOEX)
回复

使用道具 举报

3

主题

27

帖子

111

积分

注册会员

Rank: 2

积分
111
板凳
 楼主| 发表于 2022-6-6 16:45:42 | 只看该作者
Xelloss0618 发表于 2022-6-6 10:15
参数 dwCreationFlags 用整数,其他看不出问题
另外就是使用之前,需要先对 si 这个变量赋值:
si.StartupI ...

已经按照你说的用整数了。si.StartupInfo.cb = 取结构数据尺寸 (STARTUPINFOEX) 这个我之前已经用上,但现在改为整数 还是显示参数错误,只能将524288改为0才可以运行,大佬,请求帮忙调试下这个API
回复

使用道具 举报

3

主题

27

帖子

111

积分

注册会员

Rank: 2

积分
111
地板
 楼主| 发表于 2022-6-6 17:01:19 | 只看该作者
@飞翔的企鹅 @创世魂 管理们
回复

使用道具 举报

26

主题

1901

帖子

6928

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6928
5#
发表于 2022-6-6 17:41:17 | 只看该作者
sss啥 发表于 2022-6-6 16:45
已经按照你说的用整数了。si.StartupInfo.cb = 取结构数据尺寸 (STARTUPINFOEX) 这个我之前已经用上,但 ...

我之前是测试过了能成功执行,不过刚才也发现了命令行参数的一个坑
文本到字节集并没有加上结束0字符,所以也是错的。
其实也可以直接用取文本指针,不过需要给一个文本型变量。

我直接把文件传上来吧
CreateProcessAsUser.v (20.1 KB, 下载次数: 6)
回复

使用道具 举报

3

主题

27

帖子

111

积分

注册会员

Rank: 2

积分
111
6#
 楼主| 发表于 2022-6-6 19:58:00 | 只看该作者
Xelloss0618 发表于 2022-6-6 17:41
我之前是测试过了能成功执行,不过刚才也发现了命令行参数的一个坑
文本到字节集并没有加上结束0字符,所 ...

您好,大佬,我这免费版没有取结构数据尺寸 只有取数据类型尺寸 我用的易语言的cb=68 应该也一样吧
回复

使用道具 举报

26

主题

1901

帖子

6928

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6928
7#
发表于 2022-6-6 20:04:39 | 只看该作者
sss啥 发表于 2022-6-6 19:58
您好,大佬,我这免费版没有取结构数据尺寸 只有取数据类型尺寸 我用的易语言的cb=68 应该也一样吧 ...

好家伙,没有这个命令的是很老的火山了,个人版和免费版能用的命令是完全一样的,去官方下载最新版吧
结构体在32位和64位的长度不一样
回复

使用道具 举报

3

主题

27

帖子

111

积分

注册会员

Rank: 2

积分
111
8#
 楼主| 发表于 2022-6-6 21:09:00 | 只看该作者
Xelloss0618 发表于 2022-6-6 20:04
好家伙,没有这个命令的是很老的火山了,个人版和免费版能用的命令是完全一样的,去官方下载最新版吧
结 ...

谢谢大佬 解决了。
回复

使用道具 举报

51

主题

224

帖子

1387

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1387
9#
发表于 2022-6-8 17:59:32 | 只看该作者
sss啥 发表于 2022-6-6 21:09
谢谢大佬 解决了。

共享一下代码吧,借鉴一下
回复

使用道具 举报

3

主题

27

帖子

111

积分

注册会员

Rank: 2

积分
111
10#
 楼主| 发表于 2022-6-12 13:45:08 | 只看该作者
xuezhq 发表于 2022-6-8 17:59
共享一下代码吧,借鉴一下

就直接用的上面那个大佬提供的代码就解决了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-24 23:52 , Processed in 0.090013 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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