欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 遇到两个实现上的问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有11710人关注过本帖树形打印复制链接

主题:遇到两个实现上的问题

帅哥哟,离线,有人找我吗?
Marcus
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
遇到两个实现上的问题  发帖心情 Post By:2009/10/11 11:45:04 [只看该作者]

 想通过VBS实现WINDOWS API的两个功能,目前全部失败。

1. Sleep(100),实现线程暂时挂起。根据网上搜索的经验set   WshShell  =  CreateObject("WScript.Shell"),返回424, 缺少对象"Wscript'。请问金字塔用什么方法可以实现这个功能?

2. 用SendMessage和PostMessage向一个句柄发送关闭指令,即call Application.SendMessage(hwnd, WM_CLOSE, 0, 0), 返回 450, 错误的参数个数或无效的参数属性值: 'Application.SendMessage'。没有找到文档中的相关范例,不知道该怎么修改才能通过。用这两个函数的终极目的是向第三方进程发送带文本参数的指令,希望能够方便地实现。

初学VBS,发现金字塔的这个二次开发平台潜力十分强大,目前的问题就是不熟悉。
[此贴子已经被作者于2009-10-11 11:45:56编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2009/10/11 12:09:46 [只看该作者]

目前你遇到的问题金字塔都还暂时没法解决,因为VBS是不能像VB那样直接调用WINDOWS的API。

但是我们可以日后的升级版中加上你要求的函数和功能。你是否方便将金字塔目前你认为缺少的函数做一下列表说明呢?这样我们会在下个升级版中及时支持


 回到顶部
帅哥哟,离线,有人找我吗?
Marcus
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
  发帖心情 Post By:2009/10/11 15:02:33 [只看该作者]

 目前需求优先级比较高的:
VOID      Sleep(DWORD)  //只需要暂时挂起正在运行的宏,不影响其他金字塔线程
LRESULT SendMessage(HWND, UINT, WPARAM, LPARAM)
LRESULT PostMessage(HWND, UINT, WPARAM, LPARAM)
HWND     FindWindow(LPCTSTR, LPCTSTR)

需求优先级比较低的
HWND FindWindowEx(HWND, HWND, LPCTSTR, LPCTSTR)
HWND GetWindow(HWND, UINT)
HWND GetWindowText(HWND, LPSTR, int)


 回到顶部
帅哥哟,离线,有人找我吗?
admin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2009/10/11 16:50:18 [只看该作者]

除了SLEEP函数外,其他都可以加进去。

另外,金字塔的VBS语句并没有直接支持线程的东西,SLEEP函数你具体有何用途?


 回到顶部
帅哥哟,离线,有人找我吗?
Marcus
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
  发帖心情 Post By:2009/10/11 18:09:46 [只看该作者]

Sleep是在SendMessage后给一个延时再操作下一步,确保第三方进程出现预想的结果。
有些时候不是立即就能得到反馈结果,这样做的目的是提高操作成功率。

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2009/10/11 18:47:12 [只看该作者]

但是由于金字塔的VBS系统是不支持线程的,所以如果使用了SLEEP语句,那么会导致整个金字塔主程序都挂起来不能操作了


 回到顶部
帅哥哟,离线,有人找我吗?
Marcus
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
  发帖心情 Post By:2009/10/12 9:47:21 [只看该作者]

 这个正是我所担心的,那就暂时放弃Sleep的需求。

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2009/10/12 9:52:28 [只看该作者]

加上也没事,你只要控制好时间就行了,比如SLEEP(1000)表示延时1秒,这样对操作影响不大

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2009/10/12 9:55:37 [只看该作者]

http://blog.163.com/raubin@126/blog/static/710419882009089373244/

这个帖子能解决VBS使用WIN API的问题


 回到顶部
帅哥哟,离线,有人找我吗?
Marcus
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
  发帖心情 Post By:2009/11/3 23:12:04 [只看该作者]

上周末抽一点小空试验了一下,还是没成功。
由于看不到最新的说明文档,依旧一头雾水。

能否给个样本代码说明如何调用下面这三个函数?
HWND     FindWindow(LPCTSTR, LPCTSTR)
HWND     GetWindow(HWND, UINT)
LRESULT SendMessage(HWND, UINT, WPARAM, LPARAM)

 回到顶部
总数 12 1 2 下一页