ايران ويج

نسخه‌ی کامل: از کار انداختن اسکرین سیور
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
با سلام به همه
دوستان من یه برنامه نوشتم که به یه سخت افزار وصله و هر بار که سخت افزار دستور میده یه عکس رو نشون میده
مشکل اینجاست که بعد از چند وقت میره رو اسکرین سیور و صفحه سیاه میشه و تا کیبورد رو نزنی خارج نمیشه و روی برنامه نمیاد
اگر کسی میتونه کمکم کنه ممنونش میشم
چطوری برنامه وی بی اسکرین سیور رو از کار بندازه که مانیتور خاموش نشه
ممنون از همه
با سلام
نمی دونم جواب بده یا نه
کد:
http://stackoverflow.com/questions/4964302/programmatically-reset-windows-xp-idle-time
با تشکر اما چیز بدردبخوری نبود میتونید یه منبع دیگه معرفی بفرمائید
چرا بابا چیزای قشنگی نوشتن که :

نقل قول: If you need the display to stay on for example, you would call SetThreadExecutionState(ES_DISPLAY_REQUIRED|ES_CONTINUOUS);

On 2000/XP you could use the ES_USER_PRESENT flag (Does not work on Vista+)
برای اینکه صفحه نمایش در اختیار شما باشه میتونین از این تابع استفاده کنین
یعنی حتی نذاره سیستم بخوابه کلا سیستم رو به برنامه شما مقید کنه .
اینم مثالش برای وی بی :
ولی نمیدونم جواب بده یا نه

کد:
Private Declare Function SetThreadExecutionState Lib "kernel32" (ByVal esFlags As Long) As Long
Private Const ES_SYSTEM_REQUIRED = &H1
Private Const ES_DISPLAY_REQUIRED = &H2
Private Const ES_CONTINUOUS = &H80000000
Private Sub Form_Load()
Dim lReturn As Long
lReturn = SetThreadExecutionState(ES_SYSTEM_REQUIRED)
End Sub
Private Sub Form_Terminate()
Dim lReturn As Long
lReturn = SetThreadExecutionState(ES_CONTINUOUS)
End Sub

منبع



ولی فقط برای کنترل اسکرین سیور میشه کارای دیگه ای هم کرد :
یک :
موقع اجرا شدن برنامه جلوی اجرای اسکرین سیور رو گرفت و موقع خروج دوباره ریست کرد :
کد:
Private Const SPI_SETSCREENSAVEACTIVE = 17
Private Const SPI_GETSCREENSAVEACTIVE = 16
Private Const SPIF_SENDWININICHANGE = &H2
Private Const SPIF_UPDATEINIFILE = &H1
Private Declare Function SystemParametersInfo Lib "user32" Alias _
    "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, _
    ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long
Function SetScreenSaverState(ByVal enabled As Boolean) As Boolean
    Dim fuWinIni As Long
    SetScreenSaverState = SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, enabled, _
        ByVal 0&, fuWinIni) <> 0
        
End Function
Private Sub Form_Load()
    SetScreenSaverState (False)
End Sub
Private Sub Form_Terminate()
    SetScreenSaverState (True)
End Sub
منبع
و یه راه هم این که موقع اجرا شدن اسکرین سیور یه کلید بفرستیم :

کد:
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uiAction As Long, ByVal uiParam As Long, pvParam As Any, ByVal fWInIni As Long) As Boolean
Private Const SPI_GETSCREENSAVEACTIVE As Long = &H10
Private Const SPI_GETSCREENSAVERRUNNING As Long = &H72
Private Sub Form_Load()
    Dim bActive As Boolean
    SystemParametersInfo SPI_GETSCREENSAVEACTIVE, 0, bActive, False
    If bActive Then
        Timer1.enabled = True
    Else
        Timer1.enabled = False
    End If
End Sub
Private Sub Timer1_Timer()
    Dim bRunning As Boolean
        SystemParametersInfo SPI_GETSCREENSAVERRUNNING, 0, bRunning, False
    If bRunning Then
        SendKeys "-"
    End If
End Sub
منبع
سلام با اون کدها هیچکدوم نشد ولی از سند کی کمک گرفتم شد البته باید تست کنم ببینم
اگه مانیتور خاموش نشه درسته ولی اسکرین سیور رو از کار میندازه
ممنون دوست عزیز
(۲۴-اسفند-۱۳۸۹, ۱۳:۲۷:۰۰)kimiafars نوشته است: [ -> ]با سلام به همه
دوستان من یه برنامه نوشتم که به یه سخت افزار وصله و هر بار که سخت افزار دستور میده یه عکس رو نشون میده
مشکل اینجاست که بعد از چند وقت میره رو اسکرین سیور و صفحه سیاه میشه و تا کیبورد رو نزنی خارج نمیشه و روی برنامه نمیاد
اگر کسی میتونه کمکم کنه ممنونش میشم
چطوری برنامه وی بی اسکرین سیور رو از کار بندازه که مانیتور خاموش نشه
ممنون از همه

خب چرا يه رايت كليك نميكني روي دسكتاپ توي تنظيمات و كلا اسكرين سيور را ديزيبل نميكني؟

پيوست :
کد:
procedure SimulateKey(key:byte;Extra:Dword);
begin
keybd_event(key,extra,0,0);
keybd_event(key,extra,KEYEVENTF_KEYUP,0);
end;
دیزیبل کردم اما مشکل از جای دیگست مانیتور هم میره رو اسکرین سیور
(۲۵-اسفند-۱۳۸۹, ۲۲:۲۹:۳۹)kimiafars نوشته است: [ -> ]دیزیبل کردم اما مشکل از جای دیگست مانیتور هم میره رو اسکرین سیور

يعني مانيتور هوشمنده خودش اسكرين سيور داره ؟ بابا اي ول :)

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);

اون 1 را بزاري 0 خاموش ميشه مانيتور وبرعكس

خودت مانيتور را خاموش روشن كن..
(۲۵-اسفند-۱۳۸۹, ۲۳:۰۱:۱۲)joker نوشته است: [ -> ]
(۲۵-اسفند-۱۳۸۹, ۲۲:۲۹:۳۹)kimiafars نوشته است: [ -> ]دیزیبل کردم اما مشکل از جای دیگست مانیتور هم میره رو اسکرین سیور

يعني مانيتور هوشمنده خودش اسكرين سيور داره ؟ بابا اي ول :)

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);

اون 1 را بزاري 0 خاموش ميشه مانيتور وبرعكس

خودت مانيتور را خاموش روشن كن..

سلام.

من که تا حالا مانیتوری ندیدم خودش بره رو اسکرین. فکر میکنم اشتباه میکنه دوستمون.

جوکر جان این کد مانیتور رو خاموش روشن میکنه که بعد از روشن شدن مانیتور باید موس تکون بخوره تا تصویر بیاد.
سلام.
از این کد استفاده کن.

کد:
Private Const SPI_GETSCREENSAVEACTIVE = 16&
Private Const SPI_SETSCREENSAVEACTIVE = 17&
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long

'Active = True  - To Activate
'Active = False - To Deactivate
Public Function ScreenSaver(Active As Boolean) As Boolean
  Dim a As Long
  Dim r As Long
  
  a = Abs(Active) 'Needs 1 or 0
  r = SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, a, 0, 0)
  ScreenSaver = (r > 0)
End Function

Public Function IsScreenSaverActivated() As Boolean
  Dim a As Long
  Dim r As Long
  
  r = SystemParametersInfo(SPI_GETSCREENSAVEACTIVE, 0, a, 0)
  IsScreenSaverActivated = (a <> 0)
End Function

Private Sub cmdCheckScreen_Click()
    lblScreen.Caption = IIf(IsScreenSaverActivated, "Screen is active.", "Screen is not active.")
End Sub

Private Sub cmdSetScreen_Click()
    ScreenSaver optScreen(0).Value
End Sub
والا منم فكر ميكنم اشتباه ميكنه يه جائيش را :) ولي خب


اينم كد شبيه ساز فشرده شدن موس ( البته نميدونم اسكرين سيور از وقفه كيبورد استفاده ميكنه يا چيزديگه ،تست كنه )
کد:
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
         mouse_event(MOUSEEVENTF_MOVE,1,0,0,0);
صفحه‌ها: 1 2