问题标签 [tstcon32]

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 回答
219 浏览

debugging - ActiveX 控件的调试输出

我正在开发一个 ActiveX 控件,我想向 tstcon32 中的控制台区域抛出一些调试输出,就像其他控件一样。什么系统调用正在这样做?

标准输出似乎不是它

0 投票
1 回答
423 浏览

winforms - ActiveX 控件在一个主机容器中变为空白,但在其他容器中不变为空白

我需要使用 activeX 为遗留应用程序创建插件。我正在使用 C#,以便我可以共享几个相关独立产品的代码库。

当我在 SDK 的测试容器 (TstCon32.exe) 中托管控件时,一切正常。问题是,当我第一次尝试在目标应用程序中加载它时,如果我更改背景颜色控制其他东西背景保持我指定的相同颜色,但所有控件仍被控制灰色覆盖(来自容器应用程序?)。单击其他控件将导致它们绘制,调整控件大小将导致所有内容重新绘制。在初始消隐后,控制功能正常,直到下一次创建副本。

0 投票
1 回答
973 浏览

.net - activeX (COM) 控件在被父级关闭时进行清理的正确方法是什么?

我的 .net 控件在打包以供 activeX 使用时没有得到正确清理时遇到问题。

默认行为使 SDK 的测试容器应用程序 (TstCon32.exe) 在我尝试关闭它时作为无 GUI 进程运行。

我最初通过谷歌找到的解决方法是覆盖 WndProc 并Environment.Exit(0)手动调用。这确实让 TstCon32.exe 完全关闭;但是它破坏了我需要托管控件的应用程序。

该应用程序是 MDI 并且当包含控件的页面关闭时正在发送 WM_DESTROY,此时Environment.Exit(0)调用正在吹走整个应用程序。我已经尝试过Application.Exit()作为替代方案,但这使得 TstCon32 仍然不可见地运行。

0 投票
2 回答
3738 浏览

c++ - 如何将对 ole32.dll 的调用重定向到我自己的代理 DLL?

我正在尝试在我开始的某个进程中检测对CoCreateInstance的所有调用(理想情况下,我也能够检测到子进程中的调用)。

为了实现这一点,我在 Windows 7 上使用 Microsoft Visual Studio 2008,创建了一个代理 DLL,它转发标准ole32.dll库中除一个调用之外的所有调用,如各种文章中所述,例如 Intercepted: Windows Hacking via DLL Redirection。生成的 DLL 看起来不错,但我无法让现有程序(我使用标准ActiveX 控件测试容器 (tstcon32.exe)作为测试应用程序)获取我的代理 DLL。无论我做什么,程序似乎总是C:\Windows\SysWow64\ole32.dll根据Process Explorer来启动。到目前为止,我尝试了几件事:

  1. 将包含我的代理 DLL 的目录添加到PATH然后调用程序;似乎没有任何效果。
  2. 将我的代理 DLL 复制到与调用程序相同的目录中;没运气。
  3. 如动态链接库重定向.local文章中所述,在与调用程序相同的目录中创建一个文件,并将我的代理 DLL 放入同一目录 - 也不起作用。但是后来,我读到这在更新的 Windows 版本上停止工作。此外,根据注册表设置,它是“已知 DLL”,因此基于 - 的重定向可能无论如何都不起作用。ole32.dllHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs.local
  4. 使用基于清单的重定向,如使用清单问题的 DLL 重定向中所述,但这似乎也没有任何效果。但是,这种方法似乎很重要,所以我很可能做错了什么。

有没有人有将调用重定向到标准 DLL(例如ole32.dll使用存根 DLL)的经验?您是如何强制应用程序获取您的存根 DLL 的?

0 投票
1 回答
598 浏览

java - Java => ActiveX component = Swing with no interaction

I'm creating a Java bean component and then generate it to ActiveX dll like in this tutorial

It is a Swing panel

with couple JButtons

but when I test it in tstcon32.exe I can't actually press any button (JButton). It's like a picture.

What's wrong?

Thank you

upd: tried with AWT (java.awt.Panel, java.awt.Button) - same story. You see it, but you can't press the buttons

enter image description here

0 投票
3 回答
2898 浏览

c# - How to create an ActiveX control in C#?

I am not able to create a functioning ActiveX control in C#; I have tried following tutorials to do so without success.

I create a sample Class Library project which includes this code:

I then did the following steps:

  1. Properties => Application => Assembly Information => Make Assembly COM-visible
  2. Build => Register for COM interop TRUE (checked)
  3. Make Strong name for assembly (signing)
  4. Build the project
  5. regasm MyDll.dll /tlb /codebase

  6. Can't see Prisoner.PrisonerControl in tstcon32 =(

My OS is WinXP x86.


UPD: it works from VBScript:

but it is not visible in tstcon32.

0 投票
2 回答
3485 浏览

c# - 如何使用使用它的 .NET 应用程序的进程来调试 ActiveX 控件?

我使用 VS2008 在本机 C++ 中编写了一个 ActiveX 控件 (OCX)。

当我附加到 Microsoft ActiveX 控件测试容器 (TstCon32.exe) 的线程和我自己的引用该控件的本机 cpp 应用程序时,我可以正确调试它。

但是,我无法通过将其附加到引用控件的 .NET winform 应用程序的线程来调试它MyCtrlNameLib.dllAxMyCtrlNameLib.dll。它在我的断点上显示以下消息:

当前不会命中断点。没有为此文档加载任何符号。信息

我想知道是否有办法调试 .NET Winform 应用程序引用的 ActiveX 控件。

我认为问题是我的 .NET 应用程序没有加载 MyCtrlName.ocx,因此没有添加 MyCtrlName.pdb。它改为加载 InterOp.MyCtrlNameLib.dll 和 AxInterOp.MyCtrlNameLib.dll。

0 投票
1 回答
338 浏览

visual-c++ - 成功注册的 COM DLL 未在 Visual Studio 的“插入 ActiveX 控件”对话框中列出

我使用 ATL 项目(复合对象)创建了一个 COM DLL,该项目在对话框中基本上有一个树控件(它是 VS 工具箱的一部分)。

注册后,我尝试使用 Visual Studio 的“插入 ActiveX 控件”对话框的标准方法将其插入基于对话框的 MFC/ATL 应用程序中。

但这里的问题是,即使在成功注册之后,它也没有在“插入 ActiveX 控件”对话框中列出。所以我无法将它插入到容器对话框中。

我尝试过并且有效的替代方案:

在 Microsoft 提供的用于测试此类控件的工具中,即“ActiveX 控件测试容器”(TSTCON32.exe),我的 COM DLL 被正确列出并且我能够使用它。

我尝试过但无效的替代方案:

  1. 取消注册 DLL 并重新注册。
  2. 重新启动电脑。

因此,热烈感谢这方面的任何帮助。

更多细节:

  1. “.idl”和“.rgs”文件看起来都正确。
  2. 如果需要,我会分享我的项目。