Форум: "WinAPI";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизЗаставка Найти похожие ветки
← →
DimOn2 (2004-08-29 14:22) [0]Как сделать чтобы при простое приложение игнорировало экранную заставку Windows?
← →
GuAV © (2004-08-30 00:32) [1]из MSDN
Once a screen saver is chosen, Windows monitors keystrokes and mouse movements and then starts the screen saver after a period of inactivity. However, Windows does not start the screen saver if any of the following conditions exist:
The active application is not a Windows-based application.
A computer-based training (CBT) window is present.
The active application receives the WM_SYSCOMMAND message with the wParam parameter set to the SC_SCREENSAVE value, but it does not pass the message to the DefWindowProc function.
← →
DimOn2 (2004-08-30 12:28) [2]Как только спасатель экрана выбран, нажатия клавиши мониторов Windows и движения мыши и затем начинает спасателя экрана после периода бездеятельности. Однако, Windows не начинает спасателя экрана, если любое из следующих условий существует:
Активное заявление - не заявление на основе Windows.
Машинное обучение окно (CBT) присутствует.
Активное заявление получает WM_SYSCOMMAND сообщение с wParam параметром, установленным на ценность SC_SCREENSAVE, но это не передает сообщение к функции DefWindowProc.
(Переведено в промте)
И чо?????????????????
Напиши плиз код
← →
clickmaker © (2004-08-30 12:38) [3]
> Машинное обучение окно (CBT) присутствует
Не пользуйся ты этим промптом, учи аглицкий
активное приложение - не виндозное
присутствует окно, имитирующее ввод пользователя (клики и работу клавы)
активная прога получила сообщения wm_syscommand c параметром sc_screensave, но не передала его функции defwindowproc
← →
DimOn2 (2004-08-30 12:48) [4]
> clickmaker © (30.08.04 12:38) [3]
Всё же нельзя ли поконкретнее?
Что я должен писать?
← →
RagE © (2004-08-30 14:21) [5]procedure WM_SYSCOMMAND(msg: TMEssage);override
а сама функция выглядит так
begin
if Msg.msg=wm_syscommand and msg.wparam=sc_screensave then exit
inherited;
end;
сорри за ошибки, писал по памяти, с типом tmessage мог ошибиться но суть ясна
← →
GuAV © (2004-08-30 14:52) [6]Мда, Прагма тоже где-то так переводит:
Однажды экранная заставка избрана, мониторы Windows keystrokes и движения мыши а затем запускает экранную заставку после периода инертности. Однако, Windows не запускает экранной заставки, если любое из следующих условий существует:
Активное приложение - это ни основанного в Windows приложения.
Компьютерное учебное (CBT) окно присутствует.
Активное приложение получило сообщение WM_SYSCOMMAND с параметром wParam, установленным к значению SC_SCREENSAVE, но это не передает сообщения функции DefWindowProc.
Короче машинный перевод не поможет.
Поэтому читать MSDN надо самому. И особых знаний английского не требуется, чтение хэлпа как раз имхо начальный уровень.
А кроме MSDN нужно уметь ещё и хэлп читать.
> Всё же нельзя ли поконкретнее?
> Что я должен писать?
Конкретно, тебе имхо следует обрабатывать WM_SYSCOMMAND и если wParam = sc_screensave, то не передавать сообщение в DefWindowProc.
Вернуть же следует 0, как следует из справки по WM_SYSCOMMAND
Return Values
An application should return zero if it processes this message.
> с типом tmessage мог ошибиться
С этим ок, хотя можно и TWMSysCommand.
Но "ошибок по крайней мере две" (с) АП
← →
GuAV © (2004-08-30 15:04) [7]Попробуй лучше такое:
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
with Message do
if CmdType = SC_SCREENSAVE then
Result:=0
else
inherited;
end;
← →
DimOn2 (2004-08-30 16:33) [8]
> GuAV © (30.08.04 15:04) [7]
Работает! Огромнейшее спасибо
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c