PDA

View Full Version : دمای cpu



gherti69
چهارشنبه 20 فروردین 1399, 05:57 صبح
سلام
چجوری میتونم دمای cpu یا بقیه سخت افزارهای سیستم رو توی vb6 ازشون استفاده کنم

the king
چهارشنبه 20 فروردین 1399, 08:01 صبح
سلام
چجوری میتونم دمای cpu یا بقیه سخت افزارهای سیستم رو توی vb6 ازشون استفاده کنم
یک بخشی در ویندوز هست به نام WMI یا Windows Management Instrumentation که اطلاعات زیادی در مورد سخت افزار و نرم افزار رو میتونه ارائه کنه.
در نظر بگیرید که هر سخت افزاری و با هر درایوری ممکنه مشخصات متفاوتی داشته باشه، فرضا اگر در سیستم شما سه تا سنسور دما با نام های فلان پیدا میشه ممکنه در سیستم دیگری با تعداد دیگری و اسامی دیگری باشه. تشخیص اینکه کدوم سنسور مربوط به کجا است هم تجربی است.


Private Sub Form_Load()
Dim WMI As Object
Dim Items As Object
Dim Item As Object
Dim Result As String
Dim Temperature As Double
Set WMI = GetObject("WinMgmts:" & "{impersonationLevel=impersonate}!" & "/root/WMI")
Set Items = WMI.InstancesOf("MSAcpi_ThermalZoneTemperature")
For Each Item In Items
Temperature = Item.CurrentTemperature / 10 - 273.15
Result = Result & Item.InstanceName & " : " & Temperature & vbNewLine
Next
MsgBox Result
End Sub

واحد CurrentTemperature ده برابر واحد کلوین ئه، با 273.15 - 10 / به سانتی گراد تبدیل می کنیم.

اگر علاقه مند بودید که ببینید WMI چه اطلاعاتی ارائه میکنه ابزار هایی مثل SimpleWMIView (https://www.nirsoft.net/utils/simple_wmi_view.html)رو امتحان کنید.

gherti69
چهارشنبه 20 فروردین 1399, 09:18 صبح
یک بخشی در ویندوز هست به نام WMI یا Windows Management Instrumentation که اطلاعات زیادی در مورد سخت افزار و نرم افزار رو میتونه ارائه کنه.
در نظر بگیرید که هر سخت افزاری و با هر درایوری ممکنه مشخصات متفاوتی داشته باشه، فرضا اگر در سیستم شما سه تا سنسور دما با نام های فلان پیدا میشه ممکنه در سیستم دیگری با تعداد دیگری و اسامی دیگری باشه. تشخیص اینکه کدوم سنسور مربوط به کجا است هم تجربی است.


Private Sub Form_Load()
Dim WMI As Object
Dim Items As Object
Dim Item As Object
Dim Result As String
Dim Temperature As Double
Set WMI = GetObject("WinMgmts:" & "{impersonationLevel=impersonate}!" & "/root/WMI")
Set Items = WMI.InstancesOf("MSAcpi_ThermalZoneTemperature")
For Each Item In Items
Temperature = Item.CurrentTemperature / 10 - 273.15
Result = Result & Item.InstanceName & " : " & Temperature & vbNewLine
Next
MsgBox Result
End Sub

واحد CurrentTemperature ده برابر واحد کلوین ئه، با 273.15 - 10 / به سانتی گراد تبدیل می کنیم.

اگر علاقه مند بودید که ببینید WMI چه اطلاعاتی ارائه میکنه ابزار هایی مثل SimpleWMIView (https://www.nirsoft.net/utils/simple_wmi_view.html)رو امتحان کنید.


ممنون
اما این کدی که شما دادین فقط یه عدد ثابت نشون میده.
با برنامه های دیگه که cpu مانیتور میکنن چک میکنم دماهاشون اصلا نزدیک به هم نیست.
برای من توی بقیه برنامه ها ۴۷ ۴۸ اینجورا نشون میده. اما اینجا فقط ۶۰ نشون میده

the king
چهارشنبه 20 فروردین 1399, 09:39 صبح
ممنون
اما این کدی که شما دادین فقط یه عدد ثابت نشون میده.
با برنامه های دیگه که cpu مانیتور میکنن چک میکنم دماهاشون اصلا نزدیک به هم نیست.
برای من توی بقیه برنامه ها ۴۷ ۴۸ اینجورا نشون میده. اما اینجا فقط ۶۰ نشون میده
من اصلا نمیدونم اطلاعاتی که روی سیستم شما نشون میده مربوط به چه سخت افزاری ئه، ممکنه CPU جزو شون باشه یا اصلا CPU داخل شون نباشه.
WMI بر اساس سخت افزار هایی که دارید و درایور هاشون کاملا نتایج متفاوتی میده.
دمایی که اعلام میشه الزاما مربوط به CPU نیست، میتونه سنسور کارت گرافیکی باشه، میتونه برای هارد دیسک باشه، میتونه سنسور دما در جای دیگری از مادربورد باشه.
چیزی که اعلام میشه سنسور های دمای ثبت رسیده توسط درایور ها است، مختص CPU نیست.