乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 61|回复: 7

[编程交流] 需要:vlisp migra的vb代码

[复制链接]

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 08:20:17 | 显示全部楼层 |阅读模式
大家好,
有人能帮我把vb代码转换成vlisp吗?
  1. Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal Flags As Long) As Long
  2.   LoadKeyboardLayout "00000409", 1
  3. End Function

 
非常感谢您的帮助
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:35:33 | 显示全部楼层
这似乎将特定的键盘布局设置为当前,可能用于指定语言(阿拉伯语?)。来自MSDN:
 
 
资料来源:http://msdn.microsoft.com/en-us/library/windows/desktop/ms646305%28v=vs.85%29.aspx
 
HTH公司
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 08:40:48 | 显示全部楼层
感谢RenderMan的提议,
但是我想在Visual Lisp代码中调用这个VB命令,但不知道应该调用哪个外部对象:cry:
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 08:51:49 | 显示全部楼层
最后,我找到了语法:
  1. (vl-load-com)
  2. (defun C:English ()
  3. (vlax-invoke
  4. (vlax-create-object "WScript.Shell")
  5. "run"
  6. "rundll32.exe user32.dll,LoadKeyboardLayout 00000409 1"
  7. )
  8. )
  9. (defun C:Persian ()
  10. (vlax-invoke
  11. (vlax-create-object "WScript.Shell")
  12. "run"
  13. "rundll32.exe user32.dll,LoadKeyboardLayout 00000429 1"
  14. )
  15. )

 
但是,尽管没有错误消息,windows什么也不做。
 
谁知道为什么?
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:55:01 | 显示全部楼层
Ahankhahah-访问外部对象时必须释放对象,以防止灾难性的、有时甚至致命的错误。也许这只是我的偏好,但我也选择使用vlax get或create object,以获取现有对象(如果存在),而不是总是创建所述对象的新实例。
 
“user32.dll”后面应该有空格吗。。。?
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 09:05:00 | 显示全部楼层
 
RenderMan,你说得对,谢谢你的提示。
因此,代码应替换为以下代码:
  1. (vl-load-com)
  2. (defun ChangeLanguage (lang / shell)
  3. (setq shell (vlax-get-or-create-object "WScript.Shell"))
  4. (vlax-invoke
  5. shell
  6. "run"
  7. (strcat "rundll32.exe user32.dll, LoadKeyboardLayout " lang " 1")
  8. )
  9. (vlax-release-object shell)
  10. )
  11. (defun C:Persian ()
  12. (ChangeLanguage "00000429")
  13. )
  14. (defun C:English ()
  15. (ChangeLanguage "00000409")
  16. )

不幸的是,还没有任何结果。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:12:41 | 显示全部楼层
shell字符串为我运行(没有空格)。。。但它会在“多用户DLL…”中导致错误这不可能是好事。
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 09:25:28 | 显示全部楼层
伦德曼,
1-我编辑代码以涵盖您的更正。
2-我在AutoCAD中运行了它,得到的错误消息显示:
在窗口的运行编辑框(开始->运行…)中发出以下命令时这种方式:
没有错误消息,也没有任何预期结果。。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-8 14:17 , Processed in 0.507766 second(s), 69 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表