/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
private static void Main(String[] args)
{
System.Windows.Forms.Application.EnableVisualStyles();
System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
// Application.Run(new frmMain());
LoadInit loadInit = new LoadInit();
loadInit.Load(args);
}
private void showMainForm()
{
System.Threading.Thread t = new
System.Threading.Thread(new System.Threading.ThreadStart(NewMessageLook));
// 解决单线程无法调用选择文件对话框问题
t.SetApartmentState(System.Threading.ApartmentState.STA);
t.Start();
this.Close();
}
说明:
红色字体部分是解决问题的关键
分享到:
相关推荐
剪切板操作必须在STA线程中进行,因此,我们需要确保我们的线程设置为STA。 解决方法分为三步: 1. **设置线程属性**: 当我们创建一个新的线程并打算在其中操作剪切板时,需要通过`Thread.SetApartmentState()`...
SWT 使用 OLE 函数调用com控件的资料 SWT 使用 OLE 函数调用com控件的资料SWT 使用 OLE 函数调用com控件的资料SWT 使用 OLE 函数调用com控件的资料 SWT 使用 OLE 函数调用com控件的资料
CoInitialize是早期版本的COM库初始化函数,它以NULL参数调用,设置线程协同模式为单线程公寓模型(STA,Single Threaded Apartment)。在单线程公寓模型中,一个线程只能拥有一个线程公寓中的对象。对于大多数用户...
如果不按顺序进行初始化/解除函数调用,在该单线程单元(STA)里后续的初始化调用将失败,应用程序将无法工作。 解决方法: 1. 在程序初始化时调用 CoInitialize=nil 方法。例如,在使用 ADO 数据库组件时,调用程序...
本篇将详细讲解如何在C#的`RichEditBox`中调用`OLE`来插入`ActiveX`对象。 首先,理解`ActiveX`是微软提出的一种技术,它允许开发者创建可以在不同Windows应用程序间共享的组件。这些组件可以是控件、服务、文档等...
7. **性能和限制**:虽然`go-ole`为Go提供了与Win32 OLE交互的能力,但由于它是通过接口调用的,可能会有额外的性能开销。此外,`go-ole`只适用于Windows平台,不适用于其他操作系统。 8. **最佳实践**:在使用`go-...
它将以特定参数调用 CoInitializeEx,并标记协同模式为单线程模式或多线程模式。参数必须为 NULL。在 Delphi 中,CoInitialize 函数通常需要在应用程序的第一个线程中调用,以便正确地初始化 COM 库。 CoInitialize...
在ActiveX控件中动态调用DLL函数是Windows应用程序开发中的常见需求,尤其在使用Visual C++等开发工具时。ActiveX(以前称为OLE控件)是一种组件对象模型(COM),允许开发人员创建可重用的软件组件,而DLL(动态...
如果外界线程和 STA 线程在同一进程内,则代理对象将直接向 STA 线程中的隐藏窗口发送消息;如果不在同一进程内(包括远程进程),代理对象将向 RPC 管理的一个线程池请求一个线程(RPC 服务器)。 COM 线程模型的...
设置为`true`时,浏览器控件将进入离线模式,无法加载网络资源。设置为`false`则恢复正常模式。 #### 三、示例代码 以下是一段简单的示例代码,展示了如何在PowerBuilder中使用Web浏览器控件: ```powerbuilder ...
9. 调用DLL:在使用DLL时,需要将DLL导入到调用程序中,并通过导出函数与Excel进行交互。这可能涉及到设置库路径,声明函数原型,以及在适当的地方调用这些函数。 10. 性能优化:虽然OLE提供了一种灵活的方法来操作...
在处理OpenFileDialog的线程问题时,需要在创建新线程之前设置线程的ApartmentState属性为STA,以确保新的线程在正确的线程模型下运行。代码示例中通过System.Threading.Thread类创建一个新线程,并将该线程的...
6. **释放资源**:最后,确保释放所有已分配的资源并清理环境,这包括释放OLE对象和调用`CoUninitialize`函数。 #### 具体实现示例 为了更好地理解上述过程,下面提供了一个简化的代码示例,展示如何使用OLE自动化...
Java通过Ole调用Windows Media Player是一种常见的技术实践,它允许开发者在Java应用程序中嵌入并控制Windows Media Player(WMP)控件。这一技术主要依赖于Java的Standard Widget Toolkit (SWT)库,它是Java AWT和...
在VC++编程中,ActiveX(也称为OLE控件)是一种强大的工具,它允许开发者创建可以在不同应用程序之间共享的组件。这些组件可以嵌入到Web页面、其他Windows应用程序或者甚至是其他编程环境中。本文将深入探讨如何在...
CoInitialize 函数将以特定参数调用 CoInitializeEx,为当前单元初始化 COM 库,并标记协同模式为单线程模式。参数必须为 NULL。这是关于 OLE 和 COM 的问题。 在 Delphi 中,CoInitialize 和 OleInitialize 的主要...
微软官方提供了ActiveX EXE组件,这是一种支持多线程的OLE服务器,可以在VB6中创建独立的线程来运行代码。"嗷嗷叫的老马"分享的示例可能就是利用这个组件来创建和管理线程。使用ActiveX EXE,开发者可以创建一个...
在PowerBuilder中,创建一个新的OLE对象,然后将它的ClassID设置为摄像头ActiveX控件的CLSID。一旦对象被初始化,你可以通过调用其方法来启动摄像头预览并捕获图像。 2. 使用.NET组件:如果你的系统中安装了.NET ...
在本案例中,我们探讨的是如何使用DELPHI7创建一个OCX(OLE Control Extension)控件,这是一种可以在不同应用程序之间共享的自定义用户界面元素。OCX控件可以被嵌入到HTML页面中,允许Web应用与本地系统进行交互。 ...
线程模型决定了COM对象如何在多线程环境中工作,如单线程 apartment(STA)和多线程 apartment(MTA)。延迟绑定允许在运行时确定方法调用,增强了代码的灵活性。 OLE技术是COM的一个重要应用,它支持对象的嵌入和...