zoukankan      html  css  js  c++  java
  • delphi 在多线程中使用 CreateOleObject 导致失败(一定要使用CoInitialize和CoUninitialize,举例查询WMI)

    原帖地址

    http://bbs.csdn.net/topics/390481350

    解决办法

    [delphi] view plain copy
     
    1. procedure DisplayVideoInfo;  
    2. var  
    3.   wmi, objs, obj : OleVariant;  
    4.   enum           : IEnumVariant;  
    5.   value          : Cardinal;  
    6. begin  
    7.   try  
    8.     CoInitialize(nil);//  加上这两句  
    9.     wmi := CreateOleObject('WbemScripting.SWbemLocator');  
    10.     // ConnectServer无参表示连接本机  
    11.     objs := wmi.ConnectServer()  
    12.       .ExecQuery('SELECT * FROM Win32_VideoController');  
    13.     enum := IUnknown(objs._NewEnum) as IEnumVariant;  
    14.     enum.Reset;  
    15.     // 扫描每一块显卡  
    16.     while enum.Next(1, obj, value) = S_OK do  
    17.     begin  
    18.       szString.Add('名称    :' + obj.Name);  
    19.       szString.Add('制造商   :' + obj.AdapterCompatibility);  
    20.       szString.Add('芯片类型  :' + obj.VideoProcessor);  
    21.       szString.Add('DAC类型   :' + obj.AdapterDACType);  
    22.       szString.Add('显存    :' +  
    23.         VarToStr(Round(obj.AdapterRAM / 1024 / 1024)) + 'MB');  
    24.       szString.Add('颜色    :' + VarToStr(obj.CurrentBitsPerPixel) + '位');  
    25.       szString.Add(Format('屏幕分辨率是:%d * %d', [Screen.Width, Screen.Height]));  
    26.     end;  
    27.   finally  
    28.     CoUninitialize();//加上这两句  
    29.   end;  
    30. end;  

     http://blog.csdn.net/warrially/article/details/11974729

  • 相关阅读:
    GSM和GPRS的区别
    IP规划和VLSM子网划分例题
    20190806-sed面试题
    yum.rpm一点点
    实验:基于http的yum源
    vim编辑二进制文件
    关于find的-perm
    误删tree命令如何恢复
    删除Linux的依赖库并进入救援模式恢复
    第六天、用户、组、权限、grep
  • 原文地址:https://www.cnblogs.com/findumars/p/6359747.html
Copyright © 2011-2022 走看看