Дарова! Я тут опять на счёт выключения перезагрузки/компа. Функция ExitWindowsEx под NT не работает !? Может ещё есть? Вобще, если можно то примерчик напишите....
Ответ отправлен: 19.11.2002, 09:47 Отправитель: Gibbel Отвечает Avl2k
Приветствую Вас, Soldier! Нет, под NT все прекрасно работает, просто там необходимо предварительно вызвать AdjustTokenPrivileges (см. пример из MSDN'а). С уважением, Avl2k. P.S. Если пример поместить в приложение, то ответ пропадает :( Shutting Down You can use the ExitWindowsEx function to shut down the system. Shutting down flushes file buffers to disk and brings the system to a condition in which it is safe to turn off the computer. Windows NT/2000 or later: The following example enables the SE_SHUTDOWN_NAME privilege and then shuts down the system. HANDLE hToken; TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) error("OpenProcessToken");
// Cannot test the return value of AdjustTokenPrivileges.
if (GetLastError() != ERROR_SUCCESS) error("AdjustTokenPrivileges");
// Shut down the system and force all applications to close.
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0)) error("ExitWindowsEx"); For more information about setting security privileges, see Privileges.
Приложение: Ответ отправлен: 19.11.2002, 10:54 Отправитель: Avl2k Отвечает Nick Vishnievski
Здравствуйте, Soldier! потому что для выключения компа под NT нужно иметь на то привилегии. предоставляются они функцией AdjustTokenPrivileges (...) - позволить SE_SHUTDOWN_NAME. как это юзать написано в справочной системе.
Ответ отправлен: 19.11.2002, 14:14 Отправитель: Nick Vishnievski Отвечает Zloy
Доброе время суток, Soldier! Я же уже написал цитату из хелпа... если не внял: To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege
Ответ отправлен: 19.11.2002, 15:17 Отправитель: Zloy
Вопрос № 375
Здравстуйте. У меня 2 вопроса: 1) Как можно отправить сообщение на ICQ? 2) Как на WinApi сделать обычное окно программы и поместить туда одну кнопку?
Отвечу на первый вопрос. Найди в интернете описание протокола ICQ, он есть, просто надо поискать. Дальше реализуешь протокол на сокетах, тоже ничего сложного. Весь текст 2002б посылает в RTF формате, но, я думаю, может обрабатывать и простые текстовые сообщения. На второй вопрос - просто покапайся в МСДН - там есть примеры на этот счет. Ответ отправлен: 19.11.2002, 16:51 Отправитель: vitya Отвечает Gibbel
Здравствуйте, BaXI! 1. С помощью ICQAPI 2. Регистрируем класс окна(RegisterClassEx), создаем окно этого класса(CreateWindow), создаем дочернее окно класса "Button" (CreateWindow). Ответ отправлен: 19.11.2002, 11:00 Отправитель: Gibbel
Вопрос № 376
Уважаемые эксперты! Крик души!Создается странное впечатление.На мой вопрос ‘Как очистить список ссылок IE?’ пришел десяток ответов,все мне подробненько объясняли,что нужно зайти в ... и очистить ... .На мои же предыдущие более сложные вопросы я ответа так и не получил,повторяю их через некоторое время и жду ,ну, очень долго,так как для меня это очень важно,я не могу продвинуться вперед,а спросить больше не у кого.Правда,получил один-единственный ответ,кто-то сказал,что мы уже достали этим вопросом,нам,просто лень полазить в рассылках.Во-первых,мне не лень,а я в рассылках их не нашел,а во-вторых,у меня ограничен Internet.Вывод: на примитивные ответы типа, как вывести на экран строку текста или как пользоваться ф-ей itoa все отвечают хором,а на более или менее сложный вопрос никому не хочется напрягать мозги,а вопросы ведь просто так не задаются,кто-то
ждет на них ответа (как соловей лета),мы,ведь, учимся,а,вот,помочь – некому,все только очки зарабатывают. Сомневаюсь,что теперь тем более кто-нибудь ответит,но все-таки попробую,в последний раз получить ответ хоть на один вопрос: 1. как сделать прогу без окна невидимой в списке задач? 2. как сделать так,чтобы,если она есть в списке задач,но ее пытаются закрыть при помощи Ctrl+Alt+Del - она не закрывалась? По второму вопросу я понимаю,что нужно просто включить в прогу сообщение,типа WM_CLOSE и не обрабатывать его,т.е.,чтобы прога на него не реагировала,но какое именно сообщение - не знаю,перепробовал несколько,но не помогает. 3. Как считать инфу из журнала Windows\History? Пробую как обычно записать имена файлов и каталогов из папки History,а там какие-то непонятные папки типа History.IE5 и MSHist012002111220021113 и файлы index.dat
и desktop.ini.Понятно,что папки типа ‘Сегодня’ и файла в ней типа www.yahoo.com – это просто такое представление инфы в этом каталоге,а как конкретно считать инфу? 1. Как взять последнее время посещения?Число посещений?Адрес в Internet’e? Спасибо заранее,если кто-нибудь откликнется.
Здравствуйте, Юрий! В видновс nt/2000 это не возможно. Или это будет обычный процесс или сервис. в первом случае это лекго закрывается из task managera во втором случае стопается и убирается через service manager. В вин98/95 это возможно если ты ставишь стиль окна WS_CHILD (или какой-то другой, просто сейчас не помню), тогда у него не будет task bar item - соответственно исчезнет из task manager a. ДЛя того чтобы читать history посмотри в IShell и соответствующие интерфейсы, сам никогда не занимался. Сообщение обрабатывай именно WM_CLOSE и не вызывай parent's OnClose функцию. Но в нт/2000 если закрывается через таск manager то закроется наверняка, уж не сомневайся! Вот так. Будут вопросы - задавай. Ответ отправлен: 19.11.2002, 17:00 Отправитель: vitya Отвечает PL
Доброе время суток, Юрий! Попробую ответить, 1/ "Невидимыми" программами в "ОС Окна" :-) являются сервисы 2/ Если ты имеешь в виду 98ю Винь где "Снимаются задачи" то там видны только апплекухи, а не сервисы. На КодеПроджекте есть класные статью - почитай! http://codeproject.com/system/serviceskeleton.asp http://codeproject.com/system/cservicehelper.asp http://codeproject.com/system/windowsservices.asp 3/Если тебе надо знать какие страницы когда посещались то для этого и предназначены сквиды, а вот хистори почистить не чаго не стоит Надеюсь хоть чемто помог! Ответ отправлен: 20.11.2002, 07:07 Отправитель: PL Отвечает Dzik
Приветствую Вас, Юрий! 1)Под вин 98 RegisterProcess 2)Никак, по ctrl-alt-del через 15 сек прога закроется полюбому.
Ответ отправлен: 19.11.2002, 11:54 Отправитель: Dzik Отвечает Zloy
Приветствую Вас, Юрий! 1.исползуйте RegisterServiceProcess 2.единственное, что прихоит в голову - закрывая окно по тре клавишам Win вначале шлёт окну сообщение WM_CLOSE, так что можно в ответ на это сообщение запускать саму прогу заново, передавая критические параметры через командную строку, а тут которую вин пытается закрыть закрывать самому. Ответ отправлен: 20.11.2002, 09:41 Отправитель: Zloy
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.