Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 234
от 22.10.2003, 20:50

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1056
Отправлено ответов: 2168
Активность: 205.3 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Marouder
Статус: Профессиональный
Общий рейтинг: 123.08
URL: Первый Хабаровский Форум
Телефон: (4212) 21-93-65
[Подробней >>]
sir henry
Статус: Опытный
Общий рейтинг: 156.42
[Подробней >>]
Cybernetic Creature
Статус: Профессиональный
Общий рейтинг: 130.74
URL: В разработке
[Подробней >>]
 
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.57
URL: Программирование
[Подробней >>]
Vdr
Статус: Опытный
Общий рейтинг: 109.98
[Подробней >>]
samum2000
Статус: Начальный
Общий рейтинг: 127.45
[Подробней >>]
 
CJ
Статус: Доверительный
Общий рейтинг: 127.35
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 121.65
[Подробней >>]
Boriss
Статус: Доверительный
Общий рейтинг: 134
[Подробней >>]
 
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.73
URL: Пристанище неодинокого программиста
[Подробней >>]
THE_PRO
Статус: Опытный
Общий рейтинг: 139.41
URL: THE_PRO
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1036. Пивет всем! Вопрос таков! Как закрыть окно зная его хэндл? Как найти на определенной форме все объек... (ответов: 4)
Вопрос № 1037. Здравствуйте, установил Interbase Server 6, с создание баз данных, доменов, таблиц проблем нет, НО Т... (ответов: 3)
Вопрос № 1038. Как программно обнулить кэш флоппика?... (ответов: 1)
Вопрос № 1039. Ув. эксперты! Прошу оказать некоторую помощь в базах данных. В этом я пока чайник. 1. Какую технолог... (ответов: 3)
Вопрос № 1040. Здравствуйте, Уважаемые эксперты. У меня Borlad C++ Builder 6.0 Там прилогается InstallShield, но чт... (ответов: 1)
Вопрос № 1041. Здравствуйте, Уважаемые Эксперты. Не подскажите ли Вы, как к QuickRep подключить StringGrid? Дело в ... (ответов: 2)
Вопрос № 1042. Приветствую вас, эксперты! Как в Delphi выполнить подключение к сети, в частности вызвать окно "... (ответов: 5)
Вопрос № 1043. Каккое событие надо обработать, чтобы отследить свертывание формы?... (ответов: 4)
Вопрос № 1044. Всем здрасьте! Я опять к Вам за помощью. Пока не забыл, хоть Cybernetic Creature вместе со своим бра... (ответов: 2)
Вопрос № 1045. Уважаемые эксперты!! Помогите чайнику! Мне нужно в делфи7 создать форму в виде шкалы прибора со стре... (ответов: 5)
Вопрос № 1046. Приветы! SpinEdit2.Value := SpinEdit2.Value + (SpinEdit1.Value)*0.01; ПО идее значение SpinEdit2.Val... (ответов: 2)
Вопрос № 1047. Как можно перезагрузить компьютер из Delphi методами WinAPi в Win XP/2000?... (ответов: 3)

Вопросов: 12, ответов: 35


 Вопрос № 1036

Пивет всем!
Вопрос таков!
Как закрыть окно зная его хэндл?
Как найти на определенной форме все объекты с классом tbutton и отправить ему назначение закрытия?



Вопрос отправлен: 17.10.2003, 21:28
Отправитель: Кирилл

[Следующий вопрос >>] [Список вопросов]

Отвечает Marouder

Приветствую Вас, Кирилл!
1.
a)PostMessage(hwnd,WM_CLOSE,0,0)
b)SendMessage(hwnd,WM_CLOSE,0,0) - но так не закрываются окна Explorer'а и IE.
2. Неужели так трудно догадаться?
for x:=0 to ComponentCount-1 do
if Components[x].ClassName='TButton' then
PostMessage((Components[x] as TButton).Handle,WM_CLOSE,0,0);

Ответ отправлен: 18.10.2003, 05:04
Отправитель: Marouder


Отвечает sir henry

Доброе время суток, Кирилл!
1. DestroyWindow(HWND);
2. Может быть это и не оптимально, с помощью функции GetClassName(), передавая ему по очереди все хэндлы окошек, имеющихся на форме. И, естесственно, проверяя результат, а не кнопка ли :)).

Ответ отправлен: 20.10.2003, 04:30
Отправитель: sir henry


Отвечает Cybernetic Creature

Доброе время суток, Кирилл!
Отключить кнопку закрытия чужого окна
--------------------------------------------------------------------------------

Для примера, запустите "Блокнот" и попробуем его кнопку закрытия окна сделать неактивной, кроме того пункт "закрыть" в системном меню тоже будет отключён! ;-]

procedure TForm1.Button1Click(Sender: TObject);
var
hwndHandle: THANDLE;
hMenuHandle: HMENU;
begin
hwndHandle := FindWindow(nil, 'Untitled - Notepad');
if (hwndHandle <> 0) then
begin
hMenuHandle := GetSystemMenu(hwndHandle, FALSE);
if (hMenuHandle <> 0) then
DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
end;
end;


Вместо "Untitled - Notepad", нужно подставить заголовок того окна, которому вы хотите послать сообщение.
Но это окно можно закрыть из TaskBar'а.


Ответ отправлен: 18.10.2003, 19:45
Отправитель: Cybernetic Creature


Отвечает Bob Johnson

Здравствуйте, Кирилл!
Закрыть, как уже написал в асме - пошли ему WM_CLOSE или WM_QUIT. Для поиска используй GetWindow c GW_CHILD и GW_NEXT.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 17.10.2003, 21:54
Отправитель: Bob Johnson


 Вопрос № 1037

Здравствуйте, установил Interbase Server 6, с создание баз данных, доменов, таблиц проблем нет, НО ТОЛЬКО ЧЕРЕЗ КОНСОЛЬ,
а надо бы для юзеров с кнопочками через Дельфи (4 или 7)
Как подключиться к работающему Интербэйс серверу и начать работу программно (не консольно) (Сервер с ремоут лицензиями). Какими компонентами нужно пользоваться и как это будет выглядеть ?



Вопрос отправлен: 18.10.2003, 08:33
Отправитель: Jiny (zhas-trz@tarazinfo.kz)

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Приветствую Вас, Jiny!
Палитра InterBase
компоненты TIBTable, TIBQuery..........

Ответ отправлен: 18.10.2003, 19:45
Отправитель: Cybernetic Creature


Отвечает sir henry

Добрый день, Jiny!
1. Нужно отправлять на сервер соответствующие SQL команды через компоненты Delphi, которые этим заведуют. Например:
ADOCommand.CommandText:='CREATE TABLE mytable';
ADOCommand.Execute;
или с помощью IBSQL.
2. Как только законнектился с сервером, сразу можно начинать с ним работать. Например:
ADOConnection.Open;
Естесственно, должны быть заданы правильные параметры этого самого коннекта :)).


Ответ отправлен: 20.10.2003, 04:42
Отправитель: sir henry


Отвечает Bob Johnson

Приветствую Вас, Jiny!
Используй TIBSQL - в свойство SQL можно занести все, что хочешь, например:
Create table mytable (...)
И потом выполнить.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 21.10.2003, 00:37
Отправитель: Bob Johnson


 Вопрос № 1038

Как программно обнулить кэш флоппика?



Вопрос отправлен: 18.10.2003, 12:08
Отправитель: Стафеев Сергей

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Добрый день, Стафеев Сергей!
uses ShellAPI;
................
SHFormatDrive
.................

Ответ отправлен: 20.10.2003, 18:27
Отправитель: Cybernetic Creature


 Вопрос № 1039

Ув. эксперты!
Прошу оказать некоторую помощь в базах данных. В этом я пока чайник.
1. Какую технологию работы с базами данных лучше всего выбрать (BDE, ADO?...)
2. Как в BDE использовать связанные таблицы (чтобы работала подстановка, как это делается, например, в Access)?
Если лень отвечать и писать обширные послания, можете дать какую-нибудь ссылку на соответствующую литературу в сети.
Спасибо за ответ!



Вопрос отправлен: 18.10.2003, 12:41
Отправитель: Lerry

[Следующий вопрос >>] [Список вопросов]

Отвечает Vdr

Приветствую Вас, Lerry!
Ну разницу между BDE и ADO не знаю, т.к. работал только с первым.А по поводу связывания, посмотри переменную DataSource в компонентах Table и Query, она для этого и предназначена. Подробнее смотри Help.
Удачи!

Ответ отправлен: 18.10.2003, 15:13
Отправитель: Vdr


Отвечает Cybernetic Creature

Добрый день, Lerry!
1) ИнтерБейс
2) Книжка Бобровского. там все подробно описано. правда я не знаю где ее достать в элек. виде.

Ответ отправлен: 20.10.2003, 18:27
Отправитель: Cybernetic Creature


Отвечает sir henry

Приветствую Вас, Lerry!
1. Я бы рекоммендовал использовать ADO. Во-первых, не надо устанавливать на те машины, где будет работать твоя прога BDE (очень большой для дискет :). Там, где установлен MSOffice, ADO тоже установлен автоматом.Во-вторых, ADO быстрее работает (личные впечатления :), на разных типах баз не проверял, только VFP, MSSQL, Access). В остальном работа с ними примерно одинакова.
С InterBase, конечно луше использовать компоненты InterBase.
2. Без проблем, только их надо сначала связать :)).
У обоих таблиц должны быть индексы для связываемых полей. В подчиненной таблице набо указать ведущую таблицу и поле:
Orders.MasterSource := CustSource;
Orders.MasterFields := 'CustNo';
3. Покопайся в статьях сайтов:
www.delphikingdom.com
www.delphimaster.ru
там море статей :))

Ответ отправлен: 20.10.2003, 04:57
Отправитель: sir henry


 Вопрос № 1040

Здравствуйте, Уважаемые эксперты.
У меня Borlad C++ Builder 6.0 Там прилогается InstallShield, но что-то я не врубился, как им пользоваться. Объясните, какие там поля нужно заполнять, как сделать там чтобы нужные библиотеки автоматически подключались и устанавливались куда надо, как подключить BDE?
Заранее благодарен.



Вопрос отправлен: 18.10.2003, 15:10
Отправитель: VDR

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Доброе время суток, VDR!
Что вы мучаетесь сInstallSheild. есть же нормальные инстоллеры как например Installer WISE. там все легко и просто.


Ответ отправлен: 20.10.2003, 18:27
Отправитель: Cybernetic Creature


 Вопрос № 1041

Здравствуйте, Уважаемые Эксперты.
Не подскажите ли Вы, как к QuickRep подключить StringGrid?
Дело в том, что строки в StringGrid-е я создаю сам (программно), можно ли как-то связать их с каким-либо DataSource или напрямую с QuickRep?
Заранее благодарен.



Вопрос отправлен: 18.10.2003, 16:07
Отправитель: VDR

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Приветствую Вас, VDR!
Переведите содиржимое StringGrid в DBGrid связанный с DataSource. а потом с помощью QReport вывести на печать

Ответ отправлен: 20.10.2003, 18:27
Отправитель: Cybernetic Creature


Отвечает sir henry

Доброе время суток, VDR!
Полезнее будет создать таблицу (например в формате Paradox) и засовывать строки туда, тогда не возникнет проблем со связыванием с QR.

Ответ отправлен: 20.10.2003, 05:09
Отправитель: sir henry


 Вопрос № 1042

Приветствую вас, эксперты!
Как в Delphi выполнить подключение к сети, в частности вызвать окно "Подключение удаленного доступа"?
Заранее спасибо!



Вопрос отправлен: 18.10.2003, 21:58
Отправитель: AlX

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Доброе время суток, AlX!
Он (этот компонент очень велик оставь свой мейл я тебе его пошлю)

Ответ отправлен: 20.10.2003, 18:28
Отправитель: Cybernetic Creature


Отвечает samum2000

Добрый день, AlX!
Вызов окна подключения удаленного доступа:
winexec(Pchar('rundll rnaui.dll,RnaDial "MyConnect"'),sw_Show);

Ответ отправлен: 20.10.2003, 11:24
Отправитель: samum2000


Отвечает CJ

Приветствую Вас, AlX!
Напиши на karatetski@tut.by и я тебе вышлю исходники звонилки!

Ответ отправлен: 18.10.2003, 22:13
Отправитель: CJ


Отвечает Bob Johnson

Здравствуйте, AlX!
Что-то вроде RasDial и т.д.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 21.10.2003, 00:38
Отправитель: Bob Johnson


Отвечает _vt

Добрый день, AlX!
Например, использовать функцию InternetAutodial(INTERNET_AUTODIAL_FORCE_ONLINE,Application.Handle) из модуля wininet. Она вызывает соединение, выбранное в системе по умолчанию.

*** E-Man - we are waiting for you ***


Ответ отправлен: 21.10.2003, 01:10
Отправитель: _vt


 Вопрос № 1043

Каккое событие надо обработать, чтобы отследить свертывание формы?



Вопрос отправлен: 18.10.2003, 22:16
Отправитель: Кирилл

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Добрый день, Кирилл!
если не ошибаюсь OnResize & OnPaint

Ответ отправлен: 20.10.2003, 18:28
Отправитель: Cybernetic Creature


Отвечает samum2000

Приветствую Вас, Кирилл!
Вам надо ловить WM_SYSCOMMAND:
type
TForm1 = class(TForm)
private
{Private declarations}
procedure WMSysCommand(var Msg: TWMSysCommand);
message WM_SYSCOMMAND;
public
{Public declarations}
end;
.................................
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
if (Msg.CmdType = SC_MINIMIZE) or (Msg.CmdType = SC_MAXIMIZE) then
..................................

Ответ отправлен: 20.10.2003, 11:30
Отправитель: samum2000


Отвечает Boriss

Здравствуйте, Кирилл!
OnHide - вызывается при исчезновении формы с экрана. OnShow - при появлении. OnResize - при изменении размеров


Ответ отправлен: 21.10.2003, 15:00
Отправитель: Boriss


Отвечает Артём Шегеда

Доброе время суток, Кирилл!

Поставь обработчик события OnMinimize у объекта Application:
procedure TForm1.ApplicationMinimize(Sender: TObject);
begin
// делаем что-то
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMinimize := ApplicationMinimize;
end;


Ответ отправлен: 20.10.2003, 14:03
Отправитель: Артём Шегеда


 Вопрос № 1044

Всем здрасьте!
Я опять к Вам за помощью.
Пока не забыл, хоть Cybernetic Creature вместе со своим братаном не отличаются оригинальностью,
но большое им спасибо за старания. А вообще мне интересно, откуда он свои ответы выдёргивает, расскажешь? интересно было бы почитать.
И ещё, не хотелось писать, но просто коробит "эксперт???" CJ. Посмотрите для прикола что он отвечает. Или он зажрался или правда "нихрена не знает и мямлит" (со слов Cybernetic Creature).
А спросить Вас хотел про любую информацию по взаимодействию с диском на секторном уровне.
Меня интересует не столько взлом, сколько защита CD.
Вот Крис Касперский пишет:
"Забегая вперед,
заметим, что сломать можно все! Так что не стоит, право же, переоценивать стойкость
механизмов, препятствующих несанкционированному копированию лазерных дисков.
Если кому-то особо приспичит, вашу программу все равно взломают! Как? А вот об этом
и будет рассказано ниже. Как говориться: кто предупрежден, – тот вооружен. Ну а коль
уж совсем невмоготу – используйте прямой доступ к портам ввода/вывода с прикладного
уровня. Нет, вы не ослышались – в Windows NT это действительно возможно и ниже
будет рассказано как.
1 На самом деле, это утверждение не совсем верно. Некоторые из защит от копирования на бытовом
оборудовании не могут быть взломаны в принципе. В частности, защиты аудиодисков, основанные на
искажении TOC'a, приводят к нечитабельности такого диска компьютерными приводами CD-ROM, но на
аудио-плеерах, не слишком дотошно анализирующих TOC, такой диск воспроизводится вполне нормально.
Единственный способ скопировать такой диск в цифровом виде – пропатчить прошивку CD-ROM привода,
убрав из нее ряд "лишних" проверок."
Большое спасибо за любую информацию, ссылки по программированию на эту тему.
firemen01@ukr.net
P.S.
Отлаженная программа – это такая
программа, для которой еще не найдены условия, в
которых она откажет.


Приложение:


Вопрос отправлен: 19.10.2003, 02:53
Отправитель: Игорь

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Доброе время суток, Игорь!
Я не поял. шо это ты тут умничаещь?
Что я тебе сделал то.
Я если не ошибаюсь никому не задолжал тут оригинальные мысли.
Мое дело откуда я беру свои ответы.
ты лучше занимайся своими делами и ни в мои ни брата дела не лезь.
Понял !@#$%^&*
(а вот это !@#$%^&* делается так: Шифт + 12345678)

Ответ отправлен: 20.10.2003, 18:28
Отправитель: Cybernetic Creature


Отвечает Bob Johnson

Здравствуйте, Игорь!
> Вот Крис Касперский пишет:
Тебе и надо к нему обратиться. Найти его можно на wasmgroup@wasm.ru - напиши туда письмо и попроси ответить лично его, т.к. письмо придет всем членам группы.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 21.10.2003, 00:39
Отправитель: Bob Johnson


 Вопрос № 1045

Уважаемые эксперты!!
Помогите чайнику!
Мне нужно в делфи7 создать форму в виде шкалы прибора со стрелкой или в виде ЖК табло часов.Скажите как это сделать.
И как связать стрелку с прогой.Я понимаю что вопрос может и глуп,но прошу учесть что я только начинаю.И еще допускается ли применение вставок на асме.Заранее большое спасибо.
С уважением Антон.



Вопрос отправлен: 19.10.2003, 09:22
Отправитель: антон (oven_mars@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Приветствую Вас, антон!
Я посылаю вам на мыло ЖК компоненту типа лейбл наверное сами разберетесь

Ответ отправлен: 20.10.2003, 18:28
Отправитель: Cybernetic Creature


Отвечает samum2000

Приветствую Вас, антон!
1. В D7 есть компонент LCDNumber, который можно использовать как ЖК экран.
Если он вам по какой-либо причине не подходит, можно воспользоваться готовыми компонентами из интернета (например CHPack или ProVCL).
2. Стрелку, показания часов и т.п. можно связать следующим образом: при изменении чего либо в вашей программе необходимо соответствующим образом изменить параметр (чаще всего это Value).
3. Разумеется, можно. Инструкции ассемблера вставляются между зарезервированными словами ASM и END.

Ответ отправлен: 20.10.2003, 11:23
Отправитель: samum2000


Отвечает Boriss

Здравствуйте, антон!
Асм - конечно, как в "простом" Паскале.
Что такое "связать стрелку с прогой" - вопрос не глуп, но слишком много вариантов ответа.
Напиши, что хочешь. Процент выполнения?
А просто часы в виде ЖК - не сложно. Помещаешь на форму компонент - Timer (на закладке System).
Щелкаешь по нему - появится процедура, которая вызывается каждую секунду (свойство Interval = 1000).
Там пишешь: Canvas.TextOut(10, 10, DateTimeToStr(Now)); - Все остальное - полет твоей фантазии (шрифт, цвет ...)


Ответ отправлен: 21.10.2003, 15:22
Отправитель: Boriss


Отвечает sir henry

Приветствую Вас, антон!
1. Это дело решается путем размещения на форме соответствующего компонента. Чтобы не писать его самому, можно посмотреть компонент на сайтах:
www.torry.net
www.delphimaster.ru
на втором описания компонентов приводятся на русском. Насчет срелки - не знаю, ни разу не видел, а вот типа табло с ЖК индикатором точно есть.
2. Конечно можно.

Ответ отправлен: 20.10.2003, 06:11
Отправитель: sir henry


Отвечает Артём Шегеда

Доброе время суток, антон!
Есть насколько путей решения проблемы.
1. Разместить на форме TImage и загрузить в него изображение шкалы прибора,
предварительно нарисованное в каком-нибудь редакторе и экспортированное в
BMP-формат
2. Тот же TImage, но рисовать в нём при создании формы (незначительное
увеличение кода программы, но уменьшение её размера, так как картинка в
программе не хранится, а рисуется).
3. Без использования TImage, но с перерисовкой фона формы каждый раз, когда
это требуется (практически п.2, но не самый лучший вариант).
Получить текущее время можно функцией GetLocalTime. Разместив компоненту
TTimer на форме и установив период в 1 секунду мы получим простейший
секундомер
Применение вставок допустимо, однако в большинстве случаев неоправдано.
Практически
всё можно сделать на чистом Pascal, тем более, что компилятор относительно
неплохо
оптимизирует код. Если используются asm-вставки, то нужно учесть, что
используется
32-битный набор инструкций защищённого непривелегированного режима, и
команды
in, out, hlt, int недопустимы (хотя в Windows95/98/Me могут работать)
В приложении - код программы. Я использовал две компоненты TImage: одну для
циферблата (с непрозрачной основой), вторую - для стрелки (прозрачная
основа).
Каждую секунду генерируется событие Timer1.OnTimer, которое перерисовывает
стрелку.

Приложение:

Ответ отправлен: 20.10.2003, 14:12
Отправитель: Артём Шегеда


 Вопрос № 1046

Приветы!
SpinEdit2.Value := SpinEdit2.Value + (SpinEdit1.Value)*0.01;
ПО идее значение SpinEdit2.Value должно становится: Значение SPinEdit2.Value+1 процент от значения SPinEdit1.Value.
Но дельфи выдает:
Incompatible types: 'Integer' and 'Extended'
Че делать? заранее благодарю!




Вопрос отправлен: 19.10.2003, 10:33
Отправитель: Дима

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Приветствую Вас, Дима!
Я точно помню что отвечал на данный вопрос.
Отвечаю еще TSpinEdit.Value может быть только и только целочисленным. вещественным никак.
Воспользуйтесь TSpinEdit & TEdit
Edit1.Text:=FloatToStr(SpinEdit2.Value*1.01)

Ответ отправлен: 20.10.2003, 18:33
Отправитель: Cybernetic Creature


Отвечает Bob Johnson

Здравствуйте, Дима!
А разве ты не задавал такой же вопрос сюда же некоторое время назад? Вся причина в том, что spinedit.value величина целая и вместо *0.01 следует писать div 100.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 21.10.2003, 00:40
Отправитель: Bob Johnson


 Вопрос № 1047

Как можно перезагрузить компьютер из Delphi методами WinAPi в Win XP/2000?



Вопрос отправлен: 19.10.2003, 16:52
Отправитель: Elena Dolgorukova

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Приветствую Вас, Elena Dolgorukova!
Даже если ты работаешь под Администратором, твоя программка должна запросить дополнительные привилегии.Вот как это делается (Си):
void Reboot (void)
{
HANDLE hToken;
TOKEN_PRIVILEGES* NewState;
OSVERSIONINFO OSVersionInfo;
OSVersionInfo.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
GetVersionEx (&OSVersionInfo);
if (OSVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
OpenProcessToken (GetCurrentProcess (), TOKEN_ADJUST_PRIVILEGES,
&hToken);
NewState = (TOKEN_PRIVILEGES*) malloc (sizeof
(TOKEN_PRIVILEGES) + sizeof (LUID_AND_ATTRIBUTES));
NewState->PrivilegeCount = 1;
LookupPrivilegeValue (NULL, SE_SHUTDOWN_NAME,
&NewState->Privileges[0].Luid);
NewState->Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges (hToken, FALSE, NewState, NULL, NULL, NULL);
free (NewState);
CloseHandle (hToken);
}
ExitWindowsEx (EWX_REBOOT, 0);
}

Ответ отправлен: 20.10.2003, 18:28
Отправитель: Cybernetic Creature


Отвечает THE_PRO

Доброе время суток, Elena Dolgorukova!
------------------------------------------------------
Меломана, алкоголика и программера спросили, что бы те делали, если бы они вдруг проснулись в 80-м году... Меломан пошел бы спасать Джона Леннона. Алкоголик бы упился дешевой водки. А программер бы повесился... Почему? А что, опять за ЕС садиться?
------------------------------------------------------
Variant I:
asm{
mov al,0F0h
out 64h,al
}
------------------------------------------------------
Variant II:
ExitWindowsEx(EWX_FORCEIFHUNG or ewx_force,0);
завершает работу всех запущенных в системе приложений если система висит
------------------------------------------------------
Variant III:
ExitWindowsEx(EWX_REBOOT or ewx_force,0);
перезагрузка системы


Ответ отправлен: 20.10.2003, 10:25
Отправитель: THE_PRO


Отвечает sir henry

Приветствую Вас, Elena Dolgorukova!
ExitWindowsEx(EWX_REBOOT, 0)
в W2к/XP/NT4 Ваша программа должна обладать соответствующими правами, чтобы перезагрузитиь или выключить компьютер.

Ответ отправлен: 20.10.2003, 06:32
Отправитель: sir henry



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (28)
C / C++ (29)
Perl (5)
Builder / Delphi (23)
Pascal (23)
Basic / VBA (6)
Java / JavaScript (6)
PHP (10)
Криптография (7)
WinAPI (15)
Пользователю
Windows 95/98/Me (49)
Windows NT/2000/XP (62)
"Железо" (35)
Поиск информации (26)
Администратору
Windows NT/2000/XP (37)
Linux / Unix (12)
Юристу
Гражданское право (9)
Семейное право (6)
Трудовое право (6)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное