问题标签 [active-script]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1770 浏览

apache-flex - 在客户端更改 Flex 上基本身份验证的凭据

我想让用户自动重新登录我的 Flex 应用程序,它使用基本身份验证

顺便说一句,我已经注意到这个StackOverflow question,它是相关的,但没有解决注销客户端的问题。

例如,用户 A 登录后,用户 B 进入浏览器,进入登录屏幕(可能在新选项卡中)并登录。

这应该意味着我在 HTTP 标头中发送了用户 B 的凭据,并且由于这些凭据与用户 A 的不同,服务器会记录这一事实并创建一个新的单独会话。

但是,Flex 的 HTTP 代理会捕获标头并实际上忽略这些新凭据。

Flex 确实提供了一种方法来告诉服务器注销,并且 Flex 登录代码可以在每次发送凭据之前调用它,但这似乎是一个丑陋的解决方法。我希望能够做这个客户端。我也可以为基本身份验证使用非标准标头(因为我也控制服务器端身份验证),但这似乎也是一个丑陋的解决方法。

有什么方法可以简单地从 Flex 代码结束客户端的会话?例如,这可以通过 JavaScript 实现。

有没有办法像在 JavaScript 中那样直接在客户端使用 cookie?

我了解某些限制可能是出于安全考虑,但我所有的通信都是与“家庭”服务器进行的,因此应该可以避免这些限制。

0 投票
1 回答
215 浏览

code-analysis - 将设备转储与 FDT 和 ant 一起使用

我对 Flash 开发完全陌生,甚至还不知道 ActiveScript。我必须改进一些现有的 Flash 应用程序,所以首先我需要了解代码。我想使用一些工具进行代码分析,以可视化类依赖关系和代码结构。我用谷歌搜索并发现了有关 Apparat 工具的信息。现在我正在努力解决它,因为我找不到描述如何使用 Apparat 的文档。我很沮丧,但它似乎是唯一这样的工具。

所以我从例子开始。

我已经按照本指南设置了在 FDT 上运行的设备: http ://www.webdevotion.be/blog/2010/06/02/how-to-get-up-and-running-with-apparat/ 示例( http://blog.joa-ebert.com/2010/05/26/new-apparat-example/) 构建良好并创建了两个 SWF 文件。(我正在使用 ANT 构建器)

现在我想分析现有的 swf 并查看具有类依赖关系的 PNG。我该怎么做?我必须添加什么以及在哪里添加?

或者也许有人可以解释如何从 Windows 命令行使用转储?就像是

0 投票
3 回答
167 浏览

javascript - 提示使用服务器端事件处理程序激活 javascript

有没有办法提示用户使用服务器端事件处理程序激活 javascript,以防他们的 pc 上的 javascript 被关闭,他们将被要求在弹出窗口或指定的 DIV 中按下按钮(我的意思是提交表单)为了激活javascript?

0 投票
1 回答
2130 浏览

windows - 进程外 COM 服务器卡住

我正在使用进程外 COM 服务器(使用 DECLARE_CLASSFACTORY_SINGLETON 实现的 COM 单例“引擎”),它适用于 STA(CComSingleThreadModel,_ATL_APARTMENT_THREADED)。

COM 服务器客户端:

  1. ActiveScript (JScript),(我使用 AddNamedItem 传递引擎引用)。
  2. 两个独立的 IE BHO。

BHO 定期调用 Engine::dispatchEvent,Engine 调用 ActiveScript 的 JavaScript 函数。在我同时打开两个 BHO 之前,这种架构运行良好。

如果我打开两个 BHO,当我调用 ActiveScript 的函数(使用 IDispatch/Invoke)时会发生卡住。我不创建任何额外的线程。

一些注意事项:

  • 如果我不将从 BHO 检索到的对象传递给 ActiveScript(或用引擎中创建的相同对象替换它)一切正常。
  • 仅当 JScript 垃圾收集器尝试释放从 BHO 检索到的对象(调用堆栈中的 IUnknown_Release_Proxy)时才会发生卡住。

调用栈:

实施细节:

0 投票
1 回答
267 浏览

multithreading - 如何在断点中暂停的调试器中设置断点

我正在为 VBScript 主机编写调试器。我的调试器是一个外部应用程序。一切都很好。我接到 IApplicationDebugger::onHandleBreakPoint 处理程序的电话。我可以调用 IDebugApplication::ResumeFromBreakPoint 并且可以单步执行代码。

也可以在我运行脚本之前设置断点。再次调用 IApplicationDebugger::onHandleBreakPoint。还会处理错误。但是现在我想在 IApplicationDebugger::onHandleBreakPoint 中暂停时设置一个新断点。

我有一个指向 IActiveScriptDebug 的封送指针。但是当我调用 IActiveScriptDebug::EnumCodeContextsOfPosition 时,应用程序会阻塞。这对我来说是合乎逻辑的。具有 IActiveScript (IActiveScriptDebug) 对象的线程驻留在不同的 STA 中,并且仍如文档所述在调试器中被阻止。

但是从我的调试器线程访问语言引擎的正确方法是什么。我只需要一个用于特定代码行的 IDebugCodeContext 或 IEnumDebugCodeContexts 接口。我是否缺少可以访问以实现相同功能的不同界面。

0 投票
0 回答
732 浏览

com - 如何为未实现 IDispatch 接口的 COM 对象添加调度?

我想将CUIAutomationCOM 类对象的方法公开给我通过我的 Active / Windows 脚本应用程序加载和运行的脚本(我没有实现脚本引擎,我正在使用一个,特别是“JScript”引擎)。脚本宿主通常能够IDispatch自动公开任何实现对象,但CUIAutomation不实现IDispatch。调用对象 return 上QueryInterfaceIDispatch指针E_NOINTERFACE

我在下面详细说明的整个问题基本上归结为:是否可以为未实现的对象实现调度IDispatch?我敢打赌,如果可能的话,拥有对象的 coclass 的类型信息将是必要的(并且可能是充分的)要求。如果可能的话,我尝试这样做有什么问题,如下所述?我的替代方案是什么?

如前所述,我的解决方案围绕着我的假设,即如果我应该拥有 coclass 的类型信息 ( ITypeInfo) CUIAutomation,那么理论上我应该能够对所述 coclass 的对象进行运行时调度,即使没有实现它,IDispatch而只是通过ITypeInfolikeGetIDsOfNames和的方法Invoke。实际上,我会设计一个我自己的类来实现IDispatch包装一个CUIAutomation对象(或任何IUnknown我可以与适当类型信息配对的对象)并将成员调度委托给被包装的对象。

我已经成功地加载了至少CUIAutomationcoclass 的类型信息——它都在 Windows 注册表中——通过找到实现它的模块的路径并使用以下LoadTypeLib过程:

(注意:我有断言检查调用是否成功(通过比较S_OKorERROR_SUCCESS等​​ - 取决于成功的代码),但为了简洁起见,我省略了片段中的错误检查 - 如果未检查调用是否返回value 总是有一个断言围绕它,如所描述的)

委托DispatchProxy类设计如下:

CUIAutomation在相关的说明中,我需要一种方法让脚本在它们(脚本)可以调用这些对象上的方法之前获取对类对象的引用。createObject我直接允许脚本通过在“全局”实现对象上公开方法来创建指定 CLSID 的 COM 对象IDispatch,这很像 VBScript 的CreateObject函数或new ActiveXObject(progID)当时在 Internet Explorer 中的函数。它用于CoCreateInstance创建由指定 CLSID 标识的 COM 类的对象:

脚本可以创建一个CUIAutomation对象并获取对新DispatchProxy包装它的引用,如下所示:

然后它应该能够GetRootElement在对象上调用方法(此处):

不幸的是,pTypeInfo->Invoke所有这一切的核心调用都返回了E_NOTIMPL。到目前为止,这是最直接的问题。

什么没有实施,为什么?成员 ID ( dispIdMember) 匹配pTypeInfo->GetIDsOfNames之前写入的内容,后者返回S_OK,因此至少根据它,成员 ID 是有效的。我也不认为参数格式与它有任何关系——如果有的话,我会期待pTypeInfo->Invoke调用中的另一个错误代码。

GetTypeInfoCountwrite1作为类型信息计数并pTypeInfo作为结果写入GetTypeInfo对后续调用的结果没有影响ITypeInfo::Invoke——它仍然失败。

我还尝试使用我在原始coclass对象上获得的实际IUIAutomation 接口类型信息(在下面的片段中) ,而不是coclass本身的信息,即使文档类型暗示可能会自动递归到引用类型:pTypeInfoDefaultInterface ITypeInfoITypeInfo::Invoke

不管是接口还是coclass类型信息,效果都是一样的ITypeInfo::Invoke——returns E_NOTIMPL

我究竟做错了什么?我是否遗漏了一些关于 COM 或调度的重要信息,或者哪些类型信息可以为我做些什么?我不编写 IDL 文件,DispatchProxy它不是某些 COM 服务器的一部分,它是我的应用程序的严格内部类。我查看了 Visual C++ 允许我查看的虚函数表,还GetFuncDesc对类型信息进行了一些调查——它填写的内容似乎很可靠——有一切——名称和参数类型以及计数我试图调用的每个预期方法。指针有效且可用。

我承认,至少GetRootElement需要一个指向对象指针的指针,从甚至可能无法传递此类参数的脚本中调度此类方法,这可能是罪魁祸首。但根据文档,在这种情况下,ITypeInfo::Invoke可能应该返回E_INVALIDARGor 。DISP_E_EXCEPTION

我也尝试过玩弄CreateStdDispatch,但有两件事让我感到厌烦——对于初学者来说,为什么上述方法不起作用?其次,我不明白从哪里分派什么CreateStdDispatch以及哪些指针作为哪些参数。我想除非它是这里的惯用选择,否则这不是我的实际问题,但如果它对我的情况有所帮助,我完全愿意解释它究竟做了什么以及如何插入它。

0 投票
1 回答
62 浏览

com - 从 JScript(或任何 ActiveScripting)访问 Windows 联系人(Win10 之前)

我想Windows.Contact.1通过 ActiveScripting(JScript、VBScript、Python 等)使用带有 progID 的 COM 对象。

此 COM 位于C:\Program Files (x86)\Common Files\System\wab32.dll. 似乎没有可用的 TypeLib。COM 提供“Windows 通讯簿”等IContact功能将联系人作为 XML 存储在文件夹中,如 Windows 7 中)。IContact 记录在这里

在 JScript 中,我做了:

由于它导致unknown,我怀疑这个 COM 不能用于脚本。我在某处读到,继承自的所有内容IUnknown都不能用于脚本,而是必须继承自IDispatch. 但我不确定其中有多少是有效的,以及是否有解决方法。

我想要求承认我的怀疑(因为我是这一切的新手,并且没有 C++ 或 C# 背景)或要求一种方法,如何Windows.Contact.1从脚本中使用,包括一种方法来找出,我可以使用哪些方法/对象,而无需求助于 TypeLib。

我可以访问诸如Programming Windows Contacts和相关页面之类的页面,但首先我需要在 ActiveScript 中获取一个实例(JScript、VBScript、Python、Lua 都可以)。我还可以访问“MS OLE View”“OLEView DotNet”等应用程序。谢谢你。