问题标签 [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.
apache-flex - 在客户端更改 Flex 上基本身份验证的凭据
我想让用户自动重新登录我的 Flex 应用程序,它使用基本身份验证
顺便说一句,我已经注意到这个StackOverflow question,它是相关的,但没有解决注销客户端的问题。
例如,用户 A 登录后,用户 B 进入浏览器,进入登录屏幕(可能在新选项卡中)并登录。
这应该意味着我在 HTTP 标头中发送了用户 B 的凭据,并且由于这些凭据与用户 A 的不同,服务器会记录这一事实并创建一个新的单独会话。
但是,Flex 的 HTTP 代理会捕获标头并实际上忽略这些新凭据。
Flex 确实提供了一种方法来告诉服务器注销,并且 Flex 登录代码可以在每次发送凭据之前调用它,但这似乎是一个丑陋的解决方法。我希望能够做这个客户端。我也可以为基本身份验证使用非标准标头(因为我也控制服务器端身份验证),但这似乎也是一个丑陋的解决方法。
有什么方法可以简单地从 Flex 代码结束客户端的会话?例如,这可以通过 JavaScript 实现。
有没有办法像在 JavaScript 中那样直接在客户端使用 cookie?
我了解某些限制可能是出于安全考虑,但我所有的通信都是与“家庭”服务器进行的,因此应该可以避免这些限制。
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 命令行使用转储?就像是
javascript - 提示使用服务器端事件处理程序激活 javascript
有没有办法提示用户使用服务器端事件处理程序激活 javascript,以防他们的 pc 上的 javascript 被关闭,他们将被要求在弹出窗口或指定的 DIV 中按下按钮(我的意思是提交表单)为了激活javascript?
windows - 进程外 COM 服务器卡住
我正在使用进程外 COM 服务器(使用 DECLARE_CLASSFACTORY_SINGLETON 实现的 COM 单例“引擎”),它适用于 STA(CComSingleThreadModel,_ATL_APARTMENT_THREADED)。
COM 服务器客户端:
- ActiveScript (JScript),(我使用 AddNamedItem 传递引擎引用)。
- 两个独立的 IE BHO。
BHO 定期调用 Engine::dispatchEvent,Engine 调用 ActiveScript 的 JavaScript 函数。在我同时打开两个 BHO 之前,这种架构运行良好。
如果我打开两个 BHO,当我调用 ActiveScript 的函数(使用 IDispatch/Invoke)时会发生卡住。我不创建任何额外的线程。
一些注意事项:
- 如果我不将从 BHO 检索到的对象传递给 ActiveScript(或用引擎中创建的相同对象替换它)一切正常。
- 仅当 JScript 垃圾收集器尝试释放从 BHO 检索到的对象(调用堆栈中的 IUnknown_Release_Proxy)时才会发生卡住。
调用栈:
实施细节:
multithreading - 如何在断点中暂停的调试器中设置断点
我正在为 VBScript 主机编写调试器。我的调试器是一个外部应用程序。一切都很好。我接到 IApplicationDebugger::onHandleBreakPoint 处理程序的电话。我可以调用 IDebugApplication::ResumeFromBreakPoint 并且可以单步执行代码。
也可以在我运行脚本之前设置断点。再次调用 IApplicationDebugger::onHandleBreakPoint。还会处理错误。但是现在我想在 IApplicationDebugger::onHandleBreakPoint 中暂停时设置一个新断点。
我有一个指向 IActiveScriptDebug 的封送指针。但是当我调用 IActiveScriptDebug::EnumCodeContextsOfPosition 时,应用程序会阻塞。这对我来说是合乎逻辑的。具有 IActiveScript (IActiveScriptDebug) 对象的线程驻留在不同的 STA 中,并且仍如文档所述在调试器中被阻止。
但是从我的调试器线程访问语言引擎的正确方法是什么。我只需要一个用于特定代码行的 IDebugCodeContext 或 IEnumDebugCodeContexts 接口。我是否缺少可以访问以实现相同功能的不同界面。
com - 如何为未实现 IDispatch 接口的 COM 对象添加调度?
我想将CUIAutomation
COM 类对象的方法公开给我通过我的 Active / Windows 脚本应用程序加载和运行的脚本(我没有实现脚本引擎,我正在使用一个,特别是“JScript”引擎)。脚本宿主通常能够IDispatch
自动公开任何实现对象,但CUIAutomation
类不实现IDispatch
。调用对象 return 上QueryInterface
的IDispatch
指针E_NOINTERFACE
。
我在下面详细说明的整个问题基本上归结为:是否可以为未实现的对象实现调度IDispatch
?我敢打赌,如果可能的话,拥有对象的 coclass 的类型信息将是必要的(并且可能是充分的)要求。如果可能的话,我尝试这样做有什么问题,如下所述?我的替代方案是什么?
如前所述,我的解决方案围绕着我的假设,即如果我应该拥有 coclass 的类型信息 ( ITypeInfo
) CUIAutomation
,那么理论上我应该能够对所述 coclass 的对象进行运行时调度,即使没有实现它,IDispatch
而只是通过ITypeInfo
likeGetIDsOfNames
和的方法Invoke
。实际上,我会设计一个我自己的类来实现,IDispatch
包装一个CUIAutomation
对象(或任何IUnknown
我可以与适当类型信息配对的对象)并将成员调度委托给被包装的对象。
我已经成功地加载了至少CUIAutomation
coclass 的类型信息——它都在 Windows 注册表中——通过找到实现它的模块的路径并使用以下LoadTypeLib
过程:
(注意:我有断言检查调用是否成功(通过比较S_OK
orERROR_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
调用中的另一个错误代码。
将GetTypeInfoCount
write1
作为类型信息计数并pTypeInfo
作为结果写入GetTypeInfo
对后续调用的结果没有影响ITypeInfo::Invoke
——它仍然失败。
我还尝试使用我在原始coclass对象上获得的实际IUIAutomation
接口类型信息(在下面的片段中) ,而不是coclass本身的信息,即使文档类型暗示可能会自动递归到引用类型:pTypeInfoDefaultInterface
ITypeInfo
ITypeInfo::Invoke
不管是接口还是coclass类型信息,效果都是一样的ITypeInfo::Invoke
——returns E_NOTIMPL
。
我究竟做错了什么?我是否遗漏了一些关于 COM 或调度的重要信息,或者哪些类型信息可以为我做些什么?我不编写 IDL 文件,DispatchProxy
它不是某些 COM 服务器的一部分,它是我的应用程序的严格内部类。我查看了 Visual C++ 允许我查看的虚函数表,还GetFuncDesc
对类型信息进行了一些调查——它填写的内容似乎很可靠——有一切——名称和参数类型以及计数我试图调用的每个预期方法。指针有效且可用。
我承认,至少GetRootElement
需要一个指向对象指针的指针,从甚至可能无法传递此类参数的脚本中调度此类方法,这可能是罪魁祸首。但根据文档,在这种情况下,ITypeInfo::Invoke
可能应该返回E_INVALIDARG
or 。DISP_E_EXCEPTION
我也尝试过玩弄CreateStdDispatch
,但有两件事让我感到厌烦——对于初学者来说,为什么上述方法不起作用?其次,我不明白从哪里分派什么CreateStdDispatch
以及哪些指针作为哪些参数。我想除非它是这里的惯用选择,否则这不是我的实际问题,但如果它对我的情况有所帮助,我完全愿意解释它究竟做了什么以及如何插入它。
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”等应用程序。谢谢你。