вот такой вариант. срабатывает аж при нуле.но на висте хоть и выходит из цикла, типа true все-таки возвращает, но не катит все равно

Код:
// задействуем обработчик события onAppExit чтобы при выходе "восстановить" скорость мыши.
mdm.Application.enableExitHandler();
mdm.Application.onAppExit = function() {
UnSet(p);
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 константа
p = 0;
while (!SetKey(p) && p <= 49151) {
SetKey(p);
p++;
}
mdm.prompt(p);
function SetKey(p) {
// описание вызываемой функции.
//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", p);
myDLL.addParameter("integer", 1);
myDLL.addParameter("integer", 9);
//mdm.prompt(myDLL.call("boolean", "RegisterHotKey"));
var res = myDLL.call("boolean", "RegisterHotKey");
myDLL.clear();
return res;
}
function UnSet(p) {
// здесь возвращаем все на круги своя
// описание вызываемой функции.
//BOOL UnregisterHotKey(
//HWND hWnd, // window associated with hot key
//int id // identifier of hot key
//);
myDLL.addParameter("integer", hwnd);
myDLL.addParameter("integer", p);
mdm.prompt(myDLL.call("boolean", "UnregisterHotKey"));
myDLL.clear();
}
да, подождем 3.0. за прогу спасибо.