delphi4arab منتديات دلفي للعرب
كيف يمكن معرفة حرارة المعالج برمجيا - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف يمكن معرفة حرارة المعالج برمجيا (/showthread.php?tid=2998)



كيف يمكن معرفة حرارة المعالج برمجيا - fhol - 13-04-2011

السلام عليكم

كيف يمكن معرفة حرارة المعالج برمجيا

و جزاكم الله خير


كيف يمكن معرفة حرارة المعالج برمجيا - kachwahed - 13-04-2011

وعليكم السلام ورحمة الله
استخدم WMI، هنا مثال مع إدراج المكتبة WbemScripting_TLB أو المرفق
كود :
http://www.ciuly.com/delphi/wmi/cpu-system-temperature/
بالتوفيق.



كيف يمكن معرفة حرارة المعالج برمجيا - fhol - 14-04-2011

جزاك الله خيرا على الرد السريع و لكن بعد تحميلي للمرفق الله اعلم فيه خطأ لاني بعد التنفيد يأتيني خطأ هنا
[COLOR="Red"]WbemScripting_TLB, activex;
[/COLOR]
فلم اعرف اين يكمن المشكل


كيف يمكن معرفة حرارة المعالج برمجيا - kachwahed - 14-04-2011

المثال يستخدم مكتبة من Microsoft WMI Scripting
قم بتثبيتها أولا:
كود :
http://theroadtodelphi.wordpress.com/2010/11/28/be-careful-when-you-import-the-microsoft-wmiscripting-library/



كيف يمكن معرفة حرارة المعالج برمجيا - fhol - 14-04-2011

وجهني اخي من فضلك بعد زيارة الرابط الله اعلم وجدت الرابطين الذين سيفداني بحول الله
تكرم من هنا من فضلك :

كود :
http://msdn.microsoft.com/en-us/library/aa393762(VS.85).aspx http://msdn.microsoft.com/en-us/library/aa393259(v=VS.85).aspx

فلم أعرف ماذا أحمل

و بوركت اخي على تقديم العون


كيف يمكن معرفة حرارة المعالج برمجيا - kachwahed - 14-04-2011

ولا واحدة منهما...
الذي ينبغي أن تقوم بتثبيت المكتبة كما تفعل مع ActiveX/OCX
هنا طريقة أخرى لاستخدام WMI دون تثبيت المكتبة بأكملها:
PHP كود :
{$APPTYPE CONSOLE}

uses
  SysUtils
,
  
ActiveX,
  
ComObj,
  
Variants;

function 
GetWMIstring(wmiHost, root, wmiClass, wmiProperty: string): string;
var
  
objWMIService : OLEVariant;
  
colItems      : OLEVariant;
  
colItem       : OLEVariant;
  
oEnum         : IEnumvariant;
  
iValue        : LongWord;

  function 
GetWMIObject(const objectName: String): IDispatch;
  var
    
chEaten: Integer;
    
BindCtx: IBindCtx;//for access to a bind context
    
Moniker: IMoniker;//Enables you to use a moniker object
  
begin
    OleCheck
(CreateBindCtx(0, bindCtx));
    
OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten, Moniker));//Converts a string into a moniker that identifies the object named by the string
    
OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));//Binds to the specified object
  
end;

begin
  objWMIService 
:= GetWMIObject(Format('winmgmts:\\%s\%s',[wmiHost,root]));
  
colItems      := objWMIService.ExecQuery(Format('SELECT * FROM %s',[wmiClass]),'WQL',0);
  
oEnum         := IUnknown(colItems._NewEnum) as IEnumVariant;
  while 
oEnum.Next(1, colItem, iValue) = 0 do
  
begin
     Result
:=colItem.Properties_.Item(wmiProperty, 0); //you can improve this code  ;) , storing the results in an TString.
  
end;
end;

begin
 
try
    
CoInitialize(nil);
    try
      
WriteLn(GetWMIstring('.', 'root\CIMV2', 'Win32_OperatingSystem','Caption'));
      
Readln;
    finally
    
CoUninitialize;
    
end;
 
except
    on E
:Exception do
    
Begin
        Writeln
(E.Classname, ': ', E.Message);
        
Readln;
    
End;
  
end;
end. 
المصدر:
كود :
http://stackoverflow.com/questions/2761328/how-do-i-use-wmi-with-delphi-without-drastically-increasing-the-applications-fil
بالتوفيق.



كيف يمكن معرفة حرارة المعالج برمجيا - fhol - 14-04-2011

أستاذنا الفاضل و الله وجدت صعوبة فهلا سهلتها عليا سهل الله عليك في دنيا .

هل يمكنك ان تبرمجها لي او تقدم لي مشروع و سأدرس السورس

و الله لا يحرمك الاجر


كيف يمكن معرفة حرارة المعالج برمجيا - kachwahed - 14-04-2011

إقتباس :هل يمكنك ان تبرمجها لي او تقدم لي مشروع و سأدرس السورس
صدقني، لا أعرف Sad
كما قال صاحب المثال الأول، أن الفكرة نجحت معه في لوحة GigaByte ولا يدري عن النتيجة مع بقية الموديلات
وقد يتوقف الأمر على دعم Driver لتوفير هذه المعلومة، وقد يتطلب أيضا إعادة تكييف مكتبة WMI أخرى
وهو ما يتطلب معرفة جيدة بـ WMI...
جرب باستخدام Magenta WMI مجانية+سورس
كود :
http://www.magsys.co.uk/delphi/magwmi.asp
السورس مرفق.



كيف يمكن معرفة حرارة المعالج برمجيا - fhol - 14-04-2011

بارك الله فيك أستاذنا على ما قدمته لي و جزاك الله خيرا .. و اعتقد ان الامر اضخم مني بكثير و اكثر مما كنت أتوقع
و البرنامجين الاول و الثاني برامج ضخمة نسأل الله و تعالى ان يرزقنا من علمه حتى نبرمج مثلها و اكثر

للأسف سأتخلى عن المشروع و اتوجه الى امور اخرى و أسهل و اعتذر لك على الاطالة و اشكرك على صبرك معي

اتمنى ان يغلق الموضوع و شكرا