PDA

View Full Version : حرفه ای: کم کردن نور صفحه نمایش



sadegh33
شنبه 26 مرداد 1392, 21:46 عصر
سلام میخوام ی کاری کنم
طی ده ثانیه نور صفحه نمایش کم بشه تا به کم ترین حد ممکن برسه برای این کار باید از کدوم شی استفاده کنم
اگه میشه راهنمایی کنید

m.4.r.m
شنبه 26 مرداد 1392, 23:27 عصر
این ماژول :

Option Explicit

'Private Const HWND_BROADCAST = &HFFFF&
'Private Const WM_SYSCOMMAND = &H112&
'Private Const SC_MONITORPOWER = &HF170&
'Private Const POWER_ON = -1
'Private Const POWER_LOW = 1
'Private Const POWER_OFF = 2

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" ( _
ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long




این کد فراخوانی :


Private Sub Main()
'PostMessage HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, POWER_OFF
PostMessage &HFFFF&, &H112&, &HF170&, 2
End Sub

meys34
یک شنبه 27 مرداد 1392, 17:16 عصر
کدی که دوست عزیزمون قرار دادن برای خاموش کردن مونیتور هست...

اما اون چیزی که شما میخوایید WmiSetBrightness هست...

Dim objWMIService As Object
Dim colItems As Object
Dim objItem As Object

Set objWMIService = GetObject("winmgmts:\\.\root\WMI")

Set colItems = objWMIService.ExecQuery("Select * From WmiMonitorBrightnessMethods")

Dim Temp As String
On Error Resume Next
Temp = colItems.Count
On Error GoTo 0

If Temp = "1" Then
For Each objItem In colItems
If objItem.active = True Then
objItem.WmiSetBrightness 1, 0
Else
MsgBox "monitor is not active!!!"
End If
Next
Else
MsgBox "no Screen Found that support Brightness!!!"
End If

10 ثانیه تاخیر (یا هر چی دیگه) هم پای خودتون...

منبع: http://stackoverflow.com/questions/16027126/winapi-change-brightness
منبع: http://www.activexperts.com/admin/scripts/wmiscripts/vbscript/0067/

sadegh33
یک شنبه 03 شهریور 1392, 01:15 صبح
ممنون اما میشه یکمی بیشتر توضیح بدید
ی خورده سخت شد

mehran901
یک شنبه 03 شهریور 1392, 13:36 عصر
به این مورد هم نگاهی بندازین ... به نظر همون چیزیه که میخواین ...
http://www.codeproject.com/Articles/236898/Screen-Brightness-Control-for-Laptops-and-Tablets

meys34
دوشنبه 04 شهریور 1392, 11:19 صبح
به این مورد هم نگاهی بندازین ... به نظر همون چیزیه که میخواین ...
http://www.codeproject.com/Articles/236898/Screen-Brightness-Control-for-Laptops-and-Tablets

دکتر این هم که همون کد بالاییه که ...

(اصل قضیه استفاده از WmiMonitorBrightness برای پیدا کردن مقدار brightness کنونی و

استفاده از WmiMonitorBrightnessMethods برای تغییر آن هست...

من کد دیگه ای که از توابع دیگه استفاده کنه پیدا نکردم...)



ممنون اما میشه یکمی بیشتر توضیح بدید
ی خورده سخت شد

کجاش سخت شده؟ منظورتون اینجاست


10 ثانیه تاخیر (یا هر چی دیگه) هم پای خودتون...

sadegh33
سه شنبه 05 شهریور 1392, 01:10 صبح
ن درباره خوده کد ی خورده توضیح میدین

meys34
سه شنبه 05 شهریور 1392, 17:37 عصر
اصل قضیه این سه خط هست

Set objWMIService = GetObject("winmgmts:\\.\root\WMI")
Set colItems = objWMIService.ExecQuery("Select * From WmiMonitorBrightnessMethods")
objItem.WmiSetBrightness 1, 0

خط اول توسط دستور GetObject یک شی WMI می سازیم...

خط دوم توی شی ساخته شده ابزار WmiMonitorBrightnessMethods رو جستجو می کنیم تا ازش استفاده کنیم...

خط سوم هم که توسط دستور WmiSetBrightness میزان روشنایی LCD رو روی مقدار صفر تنظیم کردیم... (اون "1" هم Timeout هست که من نفهمیدم چیه و تو مایکروسافت هم توضیحی براش نیست...)



بقیه کد های پست قبلی هم مربوط میشن به خطایابی...
مثلا اگر کد روی PC اجرا بشه امکان تغییر روشنایی مونیتور از طریق ویندوز وجود نداره(برخلاف لپ تاپ ها) و اخطار میده...


WMI مخفف Windows Media Instruments است و شامل مجموعه سرویسهایی در ویندوز است که برای مدیریت سیستم از طریق اسکریپ نویسی میباشد.


بازم اگر هر جاییش سوال داشتی بپرس، برنامه نویس مخصوص همین چیزاس دیگه...