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 虚拟化 ...
随机推荐
- Windows完成端口与Linux epoll技术简介(能看懂)
WINDOWS完成端口编程1.基本概念2.WINDOWS完成端口的特点3.完成端口(Completion Ports )相关数据结构和创建4.完成端口线程的工作原理5.Windows完成端口的实例代码 ...
- TensorFlow 学习(四)—— computation graph
TensorFlow 的计算需要事先定义一个 computation graph(计算图),该图是一个抽象的结构,只有在评估(evaluate)时,才有数值解,这点和 numpy 不同.这张图由一组节 ...
- [Android]TextView点击获取部分内容
TextView控件本身有很多属性可以进行控制,如果要获取内容只需要getText()方法就可以实现,同时也可以为TextView设置各种监听器.但是,如果想要实现点击获取TextView内部的部分内 ...
- elasticsearch start
启动.停止服务 默认官方版启动: linux:./bin/elasticsearch start window:直接运行bin/elasticsearch.bat 默认官方版停止: linux:kil ...
- Scala基本语法学习笔记
Scala语法与JAVA有很多相似的地方,两者也可以相互调用.但是整体感觉Scala语法等简洁.灵活.这里记录下Scala有特点的地方,以备以后查找方便. 参考: 使用 import: htt ...
- CCD 与 CMOS
窗帘快门与全局快门: 窗帘快门,每次只允许一条缝的光线摄入,因此会呈现自上而下的扫描式拍摄,也就意味着画面上的不同高度,其实拍摄的时间是不同的,也就进一步造成了在高速移动的火车上,如果拍摄窗外的景物, ...
- 微服务:ICE 入门之 编译环境搭建
俗话说分享是学习的重要途径之一,提高自己的过程,学习,研究,应用,解决问题,总结,分享:闲来无事时便可总结下自己学习过的知识,把之前遇到过的问题也上升到方法论,把自己踩过的坑也罗列出来以防重蹈覆辙!好 ...
- 简明Python3教程 16.标准库
简介 python标准库作为python标准安装的一部分,其自身包含数量庞大的实用模块, 因此熟悉python标准库非常重要,因为很多问题都能利用python标准库快速解决. 下面我们将研究标准库中的 ...
- 图像金字塔(pyramid)与 SIFT 图像特征提取(feature extractor)
David Lowe(SIFT 的提出者) 0. 图像金字塔变换(matlab) matlab 对图像金字塔变换接口的支持(impyramid),十分简单好用. 其支持在reduce和expand两种 ...
- 专访黄勇:Java在未来的很长一段时间仍是主流(把老板当情人,把同事当小孩,把客户当病人)
url:http://www.csdn.net/article/2015-09-06/2825621 2015-09-06 13:18 摘要:本文采访了现任阿里巴巴公司系统架构师黄勇,从事近十年的Ja ...