Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не пойму... Что не так в этом коде? [D6, Win2k]


Cosinus ©   (2005-01-17 18:52:00) 

program SCR_SV_ON;

uses WinTypes, WinProcs, Messages;
 
var
 MN_HNDL:HWND;
begin
 MHNDL:= GetCurrentProcess();
 SendMessage(MHNDL,WM_SYSCOMMAND,SC_SCREENSAVE,1);
end.


Вместо простого перехода к ScreenSaver-у экран начинает бешенно моргать, такое ощущение, что он почти входит в него и тут же, поймав еще раз это сообщение, начинает все заново. Через разное кол-во времени (от 5-ти сек до минуты) входит моргание прекращается - он в скринсайвере...
Если я подключаю forms и вместо GetCurrentProcess();использую Application.Handle, то все нормально.


Sumor   (2005-01-18 00:31:00) [1]

Не надо окон дополнительно создавать.
Возьми GetActiveWindow или по FindWindow найди себе что-нибудь и ему пошли это сообщение.


Kerk   (2005-01-17 20:06:00) [2]


> QForms

хм.. может стоит Forms?

да. ты правильно понимаешь.


Cosinus   (2005-01-17 19:35:00) [3]


> Kerk ©  
Мдя-я-я...
Но используя TApplication, я начинаю использовать QForms, чего не хочется. То есть видимо придется создать окно ручками, а потом посылать сообщение.
Правильно ли я понимаю, что в итоге должно получиться что то вроде =>

NEW_WIN:=CreateWindow(...);
if NEW_WIN<>nil then
 begin
   SendMessage(NEW_WIN,...);
   DestroyWindow(NEW_WIN,...);
 end;

???


Kerk   (2005-01-17 19:20:00) [4]

Прежде чем получить хендл окно, надо это окно создать. Или создаешь его руками, или используешь TApplication.


Kerk   (2005-01-17 19:19:00) [5]

Cosinus ©   (17.01.05 19:05) [5]
Application.Handle ты правильно использовал. Только это не хендл приложения, а хендл окна, которое внутри класса TApplication сидит.


Cosinus   (2005-01-17 19:05:00) [6]

Не то...
Какую команду использовать. Простите.


Kerk   (2005-01-17 19:04:00) [7]

Cosinus ©   (17.01.05 19:03) [3]
А как в таком случае получить Handle приложения?

чивоооо!??!?!?


Cosinus   (2005-01-17 19:03:00) [8]

У-у-упс... Понял.
А как в таком случае получить Handle приложения?


MBo   (2005-01-17 18:57:00) [9]

в этом коде не так... ладно, про то, то между рулем и креслом водителя, пропущу...
SendMessage посылается ОКНУ, а не дескриптору процесса


Anton_K   (2005-01-17 18:55:00) [10]

В SendMessage надо handle окна, а не процесса передавать.


Наверх

Титульная страница Поиск, карта сайта Написать письмо