以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- 遇到两个实现上的问题 (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=88) |
-- 作者:Marcus -- 发布时间: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 -- 发布时间:2009/10/11 12:09:46 -- 目前你遇到的问题金字塔都还暂时没法解决,因为VBS是不能像VB那样直接调用WINDOWS的API。 但是我们可以日后的升级版中加上你要求的函数和功能。你是否方便将金字塔目前你认为缺少的函数做一下列表说明呢?这样我们会在下个升级版中及时支持 |
-- 作者:Marcus -- 发布时间: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 -- 发布时间:2009/10/11 16:50:18 -- 除了SLEEP函数外,其他都可以加进去。 另外,金字塔的VBS语句并没有直接支持线程的东西,SLEEP函数你具体有何用途? |
-- 作者:Marcus -- 发布时间:2009/10/11 18:09:46 -- Sleep是在SendMessage后给一个延时再操作下一步,确保第三方进程出现预想的结果。 有些时候不是立即就能得到反馈结果,这样做的目的是提高操作成功率。 |
-- 作者:admin -- 发布时间:2009/10/11 18:47:12 -- 但是由于金字塔的VBS系统是不支持线程的,所以如果使用了SLEEP语句,那么会导致整个金字塔主程序都挂起来不能操作了 |
-- 作者:Marcus -- 发布时间:2009/10/12 9:47:21 -- 这个正是我所担心的,那就暂时放弃Sleep的需求。 |
-- 作者:admin -- 发布时间:2009/10/12 9:52:28 -- 加上也没事,你只要控制好时间就行了,比如SLEEP(1000)表示延时1秒,这样对操作影响不大 |
-- 作者:admin -- 发布时间:2009/10/12 9:55:37 -- http://blog.163.com/raubin@126/blog/static/710419882009089373244/ 这个帖子能解决VBS使用WIN API的问题 |
-- 作者:Marcus -- 发布时间:2009/11/3 23:12:04 -- 上周末抽一点小空试验了一下,还是没成功。 由于看不到最新的说明文档,依旧一头雾水。 能否给个样本代码说明如何调用下面这三个函数? HWND FindWindow(LPCTSTR, LPCTSTR) HWND GetWindow(HWND, UINT) LRESULT SendMessage(HWND, UINT, WPARAM, LPARAM) |