Показать сообщение отдельно
Старый 15.01.2008, 12:37
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 3  
Ответить с цитированием
alexcon314
listener

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

а вот и пример, все проще оказалось
Код:
// отключаем ALT+TAB
// задействуем обработчик события onAppExit чтобы при выходе все "восстановить"  
mdm.Application.enableExitHandler();
mdm.Application.onAppExit = function() {
	UnSet();
	myDLL.close();
	mdm.Application.exit();
};
// принудительно ставим заголовок формы и приложения в таскбаре, 
// чтобы по ним найти хэндл
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++;
}
myDLL = new mdm.DLL("user32.dll");
SetKey();
// параметр 0x003e  выбран произвольно, но он должени быть в
// пределах от 0x0000 до 0xBFFF, и имеет смысл уникального id
// для комбинации клавиш.
// 1 - это MOD_ALT константа
// 9 - это VK_TAB константа
function SetKey() {
	// описание вызываемой функции.
	//BOOL RegisterHotKey(
    			//HWND hWnd,	// window to receive hot-key notification
    		            //int id,	// identifier of hot key
    		            //UINT fsModifiers,	// key-modifier flags
    		            //UINT vk 	// virtual-key code
   //)
	myDLL.addParameter("integer", hwnd);
	myDLL.addParameter("integer", 0x003e);
	myDLL.addParameter("integer", 1);
	myDLL.addParameter("integer", 9);
	mdm.prompt(myDLL.call("boolean", "RegisterHotKey")); 
	// промт конечно можно убрать: myDLL.call("boolean", "RegisterHotKey")
	myDLL.clear();
}
function UnSet() {
	// здесь возвращаем все на круги своя
	// описание вызываемой функции.
	//BOOL UnregisterHotKey(
    				 //HWND hWnd,	// window associated with hot key
    				//int id 	// identifier of hot key
   //);
	myDLL.addParameter("integer", hwnd);
	myDLL.addParameter("integer", 0x003e);
	mdm.prompt(myDLL.call("boolean", "UnregisterHotKey"));
	myDLL.clear();
}


Последний раз редактировалось alexcon314; 15.01.2008 в 12:47.