Привет всем, сам монитор прекрасно выключается с помощю API SendMessage(ValidHWND, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_STATE), но никто неподскажет, как это сделать так, чтоб при активности мыши/клавиатуры он не включился обратно? Кажется, мелкая проблема, но никак немогу решать. Спасибо.
Да, пробовал в цикле, с разными интервалами, но все таки монитор мерцает как светофор. P.S. Цели не совсем мирные, но вроде на форуме разрешается обсуждать такое? Или надо было создать топик в разделе Virology?
Отловите движение мыши, и нажатие клавиш. И в том случае если координаты мыши изменились, или нажата какая то клавиша снова вызывайте SendMessage().
Может попробовать поставить глобальные хуки на мышь, клаву. И/или если координаты изменились, то снова выдавать SC_MONITORPOWER. В самом просто варианте можно сделать BlockInput. Для мыши возможно поможет
Благодарю за ответы! С наблюдением координат мыши все таки получается тоже самое, что и с циклом - монитор мерцает. BlockInput помогает, но по некоторым причинам мне и самому нужна рабочая мышь.. Тоже пробовал отключить вот это http://img189.imageshack.us/img189/7008/46304316.png , никак.. Может у кого есть еще идеи?
А может просто вывесить полно экранное окошко чёренкое и отслеживать потерю фокуса на окно, и снова давать его окну, или ещё прибивать новые окошка, на которые попадёт фокус активности.
чёрное окно и выключенный моник это совсем разные вещи - разница между ними заметна так же как разница между ботинком и утюгом
скринсейвер (пусть даже и в виде чёрного окна) = включенный монитор. Включенный монитор != выключенный монитор. снова бред. вы про подсветку же забываете господа!
Тогда может драйвер. Он отрубит драйвер видеокарты и сам "Влезит" на его место и отрубит монитор, в то же время будет отвечать на запросы Windows (как бы) (хотя не знаю что насчёт акселератора и 3d). А когда нужно, восстановит на место драйвер видеокарты.
ostapas Перевод в текстовый режим - как вариант. И выход по комбинации клавиш. Ну с этим и смириться можно )
Вот написал. На висте и хр работает, исходники приложу позже. Пока потестируй . Единичку в конце сотри это для того что бы фаил отправить, а то exe не отправляются
вобщем вот исходники MASM32: драйвер Код (Text): .386 .model flat, stdcall option casemap:none include ntstatus.inc include ntddk.inc include hal.inc includelib hal.lib registrstruc struc Eaxr dd 4F10h Ecxr dd ? Edxr dd ? Ebxr dd 0401h Ebpr dd ? Esir dd ? Edir dd ? SegDs dw ? SegEs dw ? registrstruc ends .data realreg registrstruc<> .code DriverEntry proc pDriverObject:PDRIVER_OBJECT, pusRegistryPath:PUNICODE_STRING invoke x86BiosCall, 10h,addr realreg ret DriverEntry endp end DriverEntry и FASM:установщик драйвера Код (Text): format PE GUI 4.0 entry start include 'c:\fasm\include\win32ax.inc' include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\MACRO\if.inc' define SC_MANAGER_ALL_ACCESS 0xF003F define SC_MANAGER_CREATE_SERVICE 0x0002 define SERVICE_ERROR_IGNORE 00000000h define SERVICE_AUTO_START 00000002h define SERVICE_KERNEL_DRIVER 0x00000001 define SERVICE_ALL_ACCESS 000F01FFh section '.data' data readable writeable lpBinaryPathName db 'C:\Windows\System32\drivers\new.sys', 0 comen db 'драйвер видео',0 serviss db 'сервис успешно запущен',0 regiss db 'video',0 hSCManager dd ? hService dd ? no_reg db 'Сервес не запущен',0 no_men db 'Не удалось открыть менеджер сервисов',0 oshbka dd ? hFout dd ? n dd ? section '.code' code readable executable start: invoke CreateFile,lpBinaryPathName,GENERIC_WRITE,NULL,NULL,\ CREATE_ALWAYS,FILE_ATTRIBUTE_SYSTEM,NULL mov [hFout],eax invoke WriteFile,[hFout],LoadMeHere,864,n,NULL invoke CloseHandle,[hFout] invoke OpenSCManager, NULL, NULL,SC_MANAGER_ALL_ACCESS .if eax <> NULL mov [hSCManager], eax invoke CreateService, [hSCManager], regiss , comen,\ SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_AUTO_START,\ SERVICE_ERROR_IGNORE,lpBinaryPathName, NULL, NULL, NULL, NULL, NULL .if eax <> NULL mov [hService], eax invoke StartService, [hService], 0, NULL invoke MessageBox, NULL,serviss, NULL, MB_ICONSTOP invoke DeleteService, [hService] invoke CloseServiceHandle,[hService] .else invoke MessageBox, NULL,no_reg,oshbka, MB_ICONSTOP .endif invoke CloseServiceHandle, [hSCManager] .else invoke MessageBox, NULL,no_men,NULL,MB_ICONSTOP .endif invoke ExitProcess, 0 LoadMeHere: file 'E:\Prog\драйвер\newdrive\new.sys' section '.idata' import data readable writeable library kernel32,'kernel32.dll',\ user32,'user32.dll',\ gdi32,'gdi32.dll',\ advapi32,'advapi32.dll' include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\API\kernel32.inc' include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\API\user32.inc' include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\API\gdi32.inc' include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\API\advapi32.inc' писал впопыхах так что не обессутьте