![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Эмуляция CAD и Виста
Eraser © (2007-01-28 22:49:00)Задача такая, необходимо эмулировать Alt+Ctrl+Del в Висте. Права системы имеются.
В предыдущих версиях это делалось примерно так
function CADEmulateThreadFunct(Parameter: Pointer): Integer;
var
hDesktop, hDeskPrev: HDESK;
begin
Result := 0;
try
hDeskPrev := GetThreadDesktop(GetCurrentThreadId);
hDesktop := OpenDesktop('Winlogon', 0, false,
DESKTOP_CREATEMENU or DESKTOP_CREATEWINDOW or
DESKTOP_ENUMERATE or DESKTOP_HOOKCONTROL or
DESKTOP_WRITEOBJECTS or DESKTOP_READOBJECTS or
DESKTOP_SWITCHDESKTOP or GENERIC_WRITE);
if not SetThreadDesktop(hDesktop) then
beep;
PostMessage(HWND_BROADCAST, // "SAS Window"
WM_HOTKEY, 0, MAKELONG(MOD_CONTROL or MOD_ALT, VK_DELETE));
SetThreadDesktop(hDeskPrev);
CloseDesktop(hDesktop);
finally
EndThread(0);
end;
end;
при условии, что вызывающий код выполняется с правами системной учетной записи.
Однако в Висте "SAS Window", как и всю GINA убрали. Т.о. образом данный метод не подходит.
Повторюсь. Мне ненужно перехватыватьCAD, мне его нужно эмулировать... возможно в висте появилась какая-то ф-ция вроде LockWorkstation.. но я не нашел.
Спасибо.
Eraser (2007-01-29 21:44:00) [1]> [1] BiN © (29.01.07 12:22)
да знаю, что есть )) нужно что-то похожее только для CAD )
> [2] Piroxyline © (29.01.07 14:27)
эт вряд ли.. хотя не пробовал.. пробовал еще давно под XP, там не подходило вроде.
Piroxyline (2007-01-29 14:27:00) [2]А "ручное" нажатие на кнопки не подойдет? Через keybd_event (или как оно там)?
BiN (2007-01-29 12:22:00) [3]
> возможно в висте появилась какая-то ф-ция вроде LockWorkstation.
> . но я не нашел.
Не знаю насчет CAD-диалога, но LockWorkStation есть и в висте.