delphi 在多线程中使用 CreateOleObject 导致失败(一定要使用CoInitialize和CoUninitialize,举例查询WMI)
原帖地址
http://bbs.csdn.net/topics/390481350
解决办法
- procedure DisplayVideoInfo;
 - var
 - wmi, objs, obj : OleVariant;
 - enum : IEnumVariant;
 - value : Cardinal;
 - begin
 - try
 - CoInitialize(nil);// 加上这两句
 - wmi := CreateOleObject('WbemScripting.SWbemLocator');
 - // ConnectServer无参表示连接本机
 - objs := wmi.ConnectServer()
 - .ExecQuery('SELECT * FROM Win32_VideoController');
 - enum := IUnknown(objs._NewEnum) as IEnumVariant;
 - enum.Reset;
 - // 扫描每一块显卡
 - while enum.Next(1, obj, value) = S_OK do
 - begin
 - szString.Add('名称 :' + obj.Name);
 - szString.Add('制造商 :' + obj.AdapterCompatibility);
 - szString.Add('芯片类型 :' + obj.VideoProcessor);
 - szString.Add('DAC类型 :' + obj.AdapterDACType);
 - szString.Add('显存 :' +
 - VarToStr(Round(obj.AdapterRAM / 1024 / 1024)) + 'MB');
 - szString.Add('颜色 :' + VarToStr(obj.CurrentBitsPerPixel) + '位');
 - szString.Add(Format('屏幕分辨率是:%d * %d', [Screen.Width, Screen.Height]));
 - end;
 - finally
 - CoUninitialize();//加上这两句
 - end;
 - end;
 
http://blog.csdn.net/warrially/article/details/11974729
delphi 在多线程中使用 CreateOleObject 导致失败(一定要使用CoInitialize和CoUninitialize,举例查询WMI)的更多相关文章
- 问题-Delphi在多线程中使用其他窗体上的控件,报“尚未调用CoInitialize”解决方法
		
1.uses ActiveX; 2. procedure HLCJ.Execute;begin CoInitialize(nil); //要使用的控件 CoUninitialize; ...
 - Delphi 10.3.1 TNetHttpClient在多线程中存在的问题及解决方法。
		
Delphi 10.3.1发布了,对10.3.0存在的各种问题,做了大量的修正.但听高勇说TNetHttpClient在多线程中存在问题,今天做了一下测试,确实如此,看来,还需要官方进一步修正! 具体 ...
 - 域账号修改后,导致vs中的git连接失败
		
域账号修改后,导致vs中的git连接失败, fatal: Authentication failed for https://blog.csdn.net/qq_34665539/article/det ...
 - delphi的多线程编程
		
多线程的基本概念 win 98/nt/2000/xp 是个多任务操作系统,也就是:一个进程可以划分为多个线程,每个线程轮流占用cpu 运行时间和资源,或者说,把cpu 时间划成片,每个片分给不同的线程 ...
 - java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?
		
死锁.活锁.饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了. 死锁 死锁是多线程中最差的一种情况,多个线程相互占用对方的资源的锁,而又 ...
 - Delphi 实现多线程编程的线程类 TThread
		
http://blog.csdn.net/henreash/article/details/3183119 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉 ...
 - delphi之多线程编程(尚未学习)
		
本文的内容取自网络,并重新加以整理,在此留存仅仅是方便自己学习和查阅.所有代码均亲自测试 delphi7下测试有效.图片均为自己制作. 多线程应该是编程工作者的基础技能, 但这个基础我从来没学过,所以 ...
 - QT多线程中使用QTcpSocket遇到的读写数据问题
		
多线程中使用QTcpSocket在run()方法中new QTcpSocket;然后监听readyRead()信号connect(m_pTcpSocket,SIGNAL(readyRead()),th ...
 - VMware 虚拟化编程(8) — 多线程中的 VixDiskLib
		
目录 目录 前文列表 多线程注意事项 多线程中的 VixDiskLib 前文列表 VMware 虚拟化编程(1) - VMDK/VDDK/VixDiskLib/VADP 概念简析 VMware 虚拟化 ...
 
随机推荐
- 【a703】求逆序对
			
Time Limit: 10 second Memory Limit: 2 MB 问题描述 给定一个序列a1,a2...an.如果存在i小于j 并且ai大于aj,那么我们称之为逆序对,求给定序列中逆序 ...
 - 【codeforces 785B】Anton and Classes
			
[题目链接]:http://codeforces.com/contest/785/problem/B [题意] 给你两个时间各自能够在哪些时间段去完成; 让你选择两个时间段来完成这两件事情; 要求两段 ...
 - 【严肃脸】使用caffe实现色情图片的识别
			
前言 前几天看到了雅虎开源了一个色情图片的识别模型新闻,上Github一看,是基于caffe的.试了试,模型效果很赞.Github地址:https://github.com/yahoo/open_ns ...
 - js判断两个时间段是否有交集
			
//判断两个时间是否有交集 function isDateIntersection(start1, end1, start2, end2) { var startdate1 = new Date(st ...
 - hadoop编程技巧(8)---Unit Testing  (单元测试)
			
所需的环境: Hadoop相关jar包裹(下载版本的官方网站上可以): 下载junit包裹(新以及). 下载mockito包裹: 下载mrunit包裹: 下载powermock-mockito包裹: ...
 - JSP和Servlet学习笔记1 - 访问配置
			
1. 访问 WebContent 目录下的 JSP 文件 在 WebContent 目录下的文件可以直接在浏览器中访问.新建一个 test.jsp 文件 <%@ page language=&q ...
 - JDBC读取Oracle的US7ASCII编码中文乱码及不同编码下汉字占用字节的问题
			
数据库版本号:Oracle 10g 字符集:SIMPLIFIED CHINESE_CHINA.US7ASCII JDK:1.6.0_45 Oracle驱动:ojdbc14.jar 使用JDBC操作数据 ...
 - WPF依赖属性值源(BaseValueSource)
			
原文:WPF依赖属性值源(BaseValueSource) WPF依赖属性提供一个机制,可以获取依赖属性提供值的来源 其以BaseValueSource枚举表示 1.Default public ...
 - 理解c#
			
首先在介绍c#的时候我们要先理解什么是.NET,.NET就是微软的用来实验XML,Web Services,SOA(面向服务的体系结构service-oriented architecture)和敏捷 ...
 - 特征价格(Hedonic price)
			
特征价格法,又称 Hedonic 模型法和效用估价法,认为房地产由众多不同的特征组成,而房地产价格是由所有特征带给人们的效用决定的.由于各特征的数量及组合方式不同,使得房地产的价格产生差异.因此,如能 ...