Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вырубить монитор под ХР? SendMes.... - не работает :( 
V
    Опции темы
mixan
Дата 20.1.2006, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 2.1.2006

Репутация: нет
Всего: нет



Здрасте всем!

Вот понадобилось програмно монитор в StandBy переводить, а

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

по каким-то причинам не работает под ХР, может кто знает в чем причина или другой способ?

Заранее благодарен!
PM MAIL   Вверх
_hunter
Дата 20.1.2006, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



а чего ты его своей программе шлеш?
шли всем:
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
ну и последний параметр д.б.:
Цитата

The lParam parameter can have the following values:

1 - the display is going to low power

2 - the display is being shut off



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mixan
Дата 20.1.2006, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 2.1.2006

Репутация: нет
Всего: нет



Ок, спасибо, так работает!!

А вот как бы еще сделать так, чтоб он не врубался при различных событиях (мыша, клава, активность приложений), чтоб только програмно можно было включить?
PM MAIL   Вверх
_hunter
Дата 20.1.2006, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



скорее всего никак ( где-то на форуме ( кажется ) уже был такой вопрос )
а что именно нужно? ( может по-другому сделать получится? )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
StayAtHome
Дата 20.1.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


Профиль
Группа: Участник
Сообщений: 456
Регистрация: 26.1.2004
Где: Украина

Репутация: нет
Всего: 16



Может просто мышу-клаву заблокировать? Хотя, конечно это дурной тон.
PM MAIL WWW ICQ YIM   Вверх
mixan
Дата 21.1.2006, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 2.1.2006

Репутация: нет
Всего: нет



Цитата(_hunter @ 20.1.2006, 20:17)
а что именно нужно? ( может по-другому сделать получится? )


При загрузке системы пускается некое приложение и происходят некие действия, которые не должен видеть пользователь, через некоторое время можно вернуться к нормальной работе, скрывать как-то по-другому нельзя, так как все происходит с помощью мыши и клавы (эмуляция)......
И еще, а можно ли как-то скрыть окно какого либо визуального приложения, что-то типа Aplication.ShowMainForm:=false, только для любых окон?
PM MAIL   Вверх
Poseidon
Дата 21.1.2006, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Цитата(mixan @ 21.1.2006, 09:35 Найти цитируемый пост)
скрывать как-то по-другому нельзя, так как все происходит с помощью мыши и клавы (эмуляция)......
Можно! Создаешь снимок экрана и на тот же экрен его. Максимум что подумает юзер: "комп завис". Но если выдать переж этим сообщение с тем, что возможно вам покажится что комп завис, не волнуйтесь, все ОК, то никто ничего не поймет ;)

Цитата(mixan @ 21.1.2006, 09:35 Найти цитируемый пост)
И еще, а можно ли как-то скрыть окно какого либо визуального приложения, что-то типа Aplication.ShowMainForm:=false, только для любых окон?

Можно.

Код

var h: HWnd;
begin
h:= FindWindow(0, 'Заголовок окна');
ShowWindow(h, SW_Hide)
end;




--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
mixan
Дата 21.1.2006, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 2.1.2006

Репутация: нет
Всего: нет



Цитата(Poseidon @ 21.1.2006, 13:41)
Цитата(mixan @  21.1.2006,  09:35 Найти цитируемый пост)
скрывать как-то по-другому нельзя, так как все происходит с помощью мыши и клавы (эмуляция)......
Можно! Создаешь снимок экрана и на тот же экрен его. Максимум что подумает юзер: "комп завис". Но если выдать переж этим сообщение с тем, что возможно вам покажится что комп завис, не волнуйтесь, все ОК, то никто ничего не поймет ;)



Дело в том, что в таком случае не выйдет эмулировать нажатие мыши на определенных элементах (именно это необходимо), т.к. снимок-то на переднем плане и именно на нем будет клацать мышка, а не на необходимом эл-те...

А вот за ShowWindow спасибо, как-то подзабыл о наличии оной функции, совсем заработался smile
PM MAIL   Вверх
_hunter
Дата 23.1.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



так ты не мышой кликай, а ее ввод шли -- mouse_event()


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mixan
Дата 23.1.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 2.1.2006

Репутация: нет
Всего: нет



Известны только координаты, по которым необходимо кликнуть, а вот кому этот клик достанется неизвестно, потому клик отправлять нужно по координатам, а не определенному эл-ту smile
Ну а воще, то в принципе задача решена (правда коряво), блокировка ввода (клавы и мыши) с выключением монитора, а потом короткая разблокировка для выполнения действий и снова блокировка,
Код

procedure BlockInput; external 'user32.dll';
// включение клавы и мыши
procedure UnBlock;
asm
  push 0
  call BlockInput
end;
// выключение клавы и мыши
procedure Block;
asm
  push 1
  call BlockInput
end;


так что не успевает загораться моник smile, правда при этом есть риск, что юзер будет постоянно дергать мышой и можно промахнуться с кликом, но это не критично, т.к. мон так и не включится полностью пока не кликнется в нужном месте.
Так что спасибо за помощь!
PM MAIL   Вверх
ShadowDancer
Дата 24.1.2006, 18:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(StayAtHome @ 20.1.2006, 21:17 Найти цитируемый пост)

Может просто мышу-клаву заблокировать? Хотя, конечно это дурной тон.

А как ?
  Вверх
Rowi
Дата 24.1.2006, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 12.12.2005
Где: Украина

Репутация: нет
Всего: нет



Цитата(ShadowDancer @ 24.1.2006, 18:46 Найти цитируемый пост)

Может просто мышу-клаву заблокировать? Хотя, конечно это дурной тон.


А как ?

Если не ошибаюсь:
BlockInput(false) - отключить,
BlockInput(true) - включить
PM MAIL   Вверх
ShadowDancer
Дата 24.1.2006, 21:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Rowi, а можешь написать пример, допустим отключается клава по нажатию буттона, а включается при срабатывании таймера. Буду оч. благодарен, я на Дельфи недавно программлю
  Вверх
HackMan
Дата 27.1.2006, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: нет
Всего: 9



ShadowDancer
Вопрос не по теме. Учись пользоваться поиском. На форуме этот вопрос не раз встречался



--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
Misha_White
  Дата 29.4.2007, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 25.4.2007
Где: Кодинск

Репутация: нет
Всего: 1



Блин, че-то не верится, что моник нельзя вырубить... Но SendMes и вправду почти не работает... Че-то не хочется Хуки на клаву с мышОй писать... Может все-таки кто-нибудь знает? SOS....
--------------------
Я не волшебник... я только учусь...  
PM MAIL ICQ Skype   Вверх
DIMONSOFT
Дата 17.5.2007, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 19.12.2004
Где: Киев

Репутация: -1
Всего: -3



Не факт что сработает:

void show_display(void)
      {
    asm {
        MOV AX, 0x1200
        MOV BL, 0x36
        INT 0x10
    }
      }

void hide_display(void)
      {
    asm {
        MOV AX, 0x1201
        MOV BL, 0x36
        INT 0x10
    }
      }
--------------------
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.