相关疑难解决方法(0)

没有表单的ActiveX控件

我们需要使用第三方ActiveX控件.

唯一的问题是,我们软件中的图层是业务层,无法访问窗口或表单.它还运行在不是STA的单独线程上(并且应该在任何线程中工作).

我们使用此解决方法使其工作,而不是将UI与业务逻辑分开.

Thread thread = new Thread((ThreadStart)
delegate
{
_myActiveX = new MyActiveXType();
_myActiveX.CreateControl();

//more initialize work

Application.Run();
});
thread.SetApartmentState(ApartmentState.STA);
thread.IsBackground = true;
thread.Start();
Run Code Online (Sandbox Code Playgroud)

然后,只要我们需要引用控件,我们调用_myActiveX.BeginInvoke()Invoke().

在处理这个类(退出我们的应用程序)时,我们处理控件并中止线程.

我的问题是,这有什么问题吗?有没有更好的方法来处理这个?

在未知的多线程环境中有没有更好的内置方法来使用ActiveX控件?我们试图以包装控件的方式编写我们的类,但是可以在任何线程中工作.

更新:作为一个答案建议,我们真的宁愿使用标准COM对象,而根本不使用控件.我们的问题是我们会在我们调用COM对象的第一个方法或属性上得到错误"(来自HRESULT的异常:0x8000FFFF(E_UNEXPECTED)".这是一个非常一般的错误,我们在使用ActiveX时没有得到这个错误, 有任何想法吗?

更新:我们的ocx是"CX25.ocx",使用tlbimp.exe我们得到CX25Lib.dll.使用aximp.exe,我们得到AxCX25Lib.dll和CX25Lib.dll.在任何一种情况下CX25Lib.dll都不起作用.AxCX25Lib.dll可以使用.

.net c# activex winforms

18
推荐指数
1
解决办法
1万
查看次数

以编程方式创建 Windows 会话

我在 Windows 服务 (0) 会话中运行了一项服务。从客户端连接后,我需要为给定的用户凭据创建一个新的 Windows 会话,登录该用户并在此新会话中启动应用程序。

有没有办法以编程方式为给定的用户凭据创建用户会话?

windows winapi rdp

8
推荐指数
2
解决办法
7216
查看次数

以编程方式创建和启动RDP会话(没有gui)

我想知道是否有办法以编程方式在Windows Server上创建和启动远程桌面会话.

我正在尝试创建一个自动工具来创建本地用户,然后启动关联RDP会话.我已经创建了LocalUser并将它们添加到远程桌面用户(使用net.exe).但我对下一步感到震惊:创建并启动用户的rdp-session.如果没有远程桌面客户端Gui,我不知道如何处理这个问题.

我正在使用Windows Server 2003,而我正在使用VS2008和.NET 3.5.

问候.

.net c# c++ windows

6
推荐指数
2
解决办法
3万
查看次数

通过 Win32 API 从服务创建 Windows 会话

我有一个 Windows 服务,它可以通过调用“CreateProcessAsUser”函​​数在用户 Windows 会话中创建一个可执行文件。只要那里已经有一个 Windows 会话,这就可以正常工作。如果还没有一个,我希望能够以编程方式创建一个。这是可能的吗?似乎无法找到一个功能来做到这一点。

windows winapi

5
推荐指数
1
解决办法
4815
查看次数

标签 统计

windows ×3

.net ×2

c# ×2

winapi ×2

activex ×1

c++ ×1

rdp ×1

winforms ×1