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

  • 相关阅读:
    go语言学习---指针
    vscode打开多个窗口配置
    python网页版编辑器jupyter使用教程
    go语言学习---判断链表是否有环
    go语言学习---二分查找
    go语言学习---反转链表
    cvxpy学习---初识&&安装使用
    redis学习---linux源码搭建安装redis
    javaScript中的空值和假值
    nrm是什么?以及nrm的安装与命令
  • 原文地址:https://www.cnblogs.com/findumars/p/6359747.html
Copyright © 2011-2022 走看看