Тема: Zinc FAQ
Показать сообщение отдельно
Старый 27.11.2007, 23:40
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 10  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Запуск скринсейвера

небольшая фича, которая позволяет запустить программно скринсэйвер, установленный в системе по умолчанию

Код:
// go-стандартная кнопка
go.label = "screensaver";
mdm.Application.doEvents();
formTitle = mdm.Forms.MainForm.title = "form";
appTitle = mdm.Application.title = "app";
// получаем хэндл окна
var wList = mdm.System.getWindowList();
var i = 0;
while (wList[i][1]) {
	if (wList[i][0] == formTitle || wList[i][0] == appTitle) {
		hwnd = wList[i][1];
	}
	i++;
}
go.onRelease = function() {
// шлем WM_SYSCOMMAND с wParam = SC_SCREENSAVE и lParam = 0
	mdm.System.postMessage(hwnd, 0x0112, 0xF140, 0);
	};
title у формы устанавливается программно, чтобы получить хэндл окна приложения через getWindowsList, но можно устанвить титле и вручную. Важно только чтоб фактический титле совпал со строкой сравнения в цикле while.
Далее окно само себе шлет системное сообщение на запуск скринсейвера.