![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
Как сделать, чтобы:
1)когда в винд входишь запускалась программа и пока она не закроется работу не начнёшь. 2)программу нельза было закрыть через Ctrl+Alt+Del. 3)программу можно было закрыть только кнопкой на форме. Заранее спасибо! -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Moderator: пожалуйста 1 вопрос для 1 топика.
2)Какая ось? (На NT практически невозможно) 3)обрабатывай onCloseQuery событие формы -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
1) Насчёт вопросов понял - на будущее запомню
2)Windows 98 3)Ты всмысле в кнопку событие пихнуть? -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
На форме событие onCloseQuery.
Когда юзер попытается выйти из проги произойдет то что ты там написал -------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
Спасибо Daxter!
Но это в смыле вообще нельзя выйти? -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Что значит вообще? TaskManager конечно может убить твой процесс невзирая ни на какие извороты внутри программы, особенно трудно сделать неубиенной программу для NT/2000/XP. Здесь реально выходов 3 -
1) Запускать программу как сервис (так же как драйвер например диска) 2) Сделать 2 программы, которые будут с достаточно высокой частотой проверять в памяти наличие друг друга и при убиении одной задачи другая будет немедленно ее запускать снова - это т.н. принцип "Робин Гуд и отец Тук" 3) Запускать программу из батника в бесконечном цикле OnCloseQuery способен предотвратить стандартное закрытие программы по нажатию крестика на заголовке или Alt-F4 -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
Странно onCloseQuery - не работает!
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
А че ты там написал?
-------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
| HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 110 Регистрация: 28.8.2002 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Для того что бы самому решить когда пользователю можно закрыть форму а когда нет можно обрабатывать событие формы: void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { bool clos; … // Выполняем вычисления и в зависимости от того хотим мы // разрешить закрыть форму или ну его нафиг этого наглого пользователя // присваиваем clos значение или true или false Action=TCloseAction(clos); } --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
1. Возьми и переправь в win.ini (кажется) значение оболочки с explorer.exe на твою прогу. Во завершению себя запускай explorer.exe
2. Самое надежное - это вытащить эти клавиши из клавиатуры и спрятать их подальше. 3. Убрать все лишнии кнопки с формы (крестик и систем меню), а еще можно заоодно с контролом альтом и делом и ф4 вытащить. Никак шелл для клуба пишешь? -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| HexoGenus |
|
|||
|
Unregistered |
В Project1.cpp или как там у тебя называется главный файл проекта... пишешь функцию : typedef DWORD (WINAPI *PREGISTERSERVICEPROCESS)(DWORD,DWORD); bool RSP(double p1, double p2) { PREGISTERSERVICEPROCESS rsp; HINSTANCE hK32; bool Rc=false; hK32=GetModuleHandle("kernel32.dll"); if(hK32!=NULL) { rsp=(PREGISTERSERVICEPROCESS) GetProcAddress(hK32, "RegisterServiceProcess"); if(rsp!=NULL) { Rc=true; rsp(p1,p2); } FreeLibrary(hK32); } return Rc; } Потом вставляешь в WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { //************************ // Вот эту строчку //*************VVVVVVVVVVVVVVVVVVVV if (!RSP(NULL,1)) return 0; Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } return 0; } Если все правильно скопировал из своего файла и доходчиво объяснил куда все это лепится то твоя прога после запуска просто исчезнет из списка задач в списке Ctrl+Alt+Del Кстати в списке иконок для сообщения не хватает растопыренных пальцев |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
Спосибо, проверю!
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
Не катит, даже после изменений не катит!
До изменений куча ошибок, а после дохимичелся, вообще форма изчезает! -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
Сделал!
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
1) HexoGenus (программу можно было закрыть только кнопкой на форме) так форму вообще не могу закрыть!
---- 2)Baa - 1) я пробовал, но просто запускает (тоже самое, что и через автозагузку). 3)надеюсь не будет отвлечение от темы, если я спрошу "Как?" -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 110 Регистрация: 28.8.2002 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Как то ты запутанно стал вопросы задавать... По поводу Ctrl+Alt+Del пример приведенный мною у меня нормально работает правда у меня первая версия Билдера, но я описание брал с форума значит должно работать и в более старших версиях... --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
| HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 110 Регистрация: 28.8.2002 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Хмммм... какой то бардак копирую код из билдера в форум а из кода при нажатии на кнопку отправить вырезается кусок в середине
Прийдется словами описывать --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
| HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 110 Регистрация: 28.8.2002 Где: Ростов-на-Дону Репутация: нет Всего: нет |
В описании класса формы (Unit1.h) в разделе
public: вставляем bool bCloseAccess; при создании формы (Unit1.cpp) в событии FormCreate вставляем // Запрет на закрытие формы кому попало... bCloseAccess=false; Создаем кнопку и в обработчике Button1Click пишем // Уж мы то знаем когда можно закрыть bCloseAccess=true; // Закрываем форму Close(); И в обработчике FormClose пишем Action= TCloseAction(bCloseAccess); В результате форма будет закрываться только конкретно этой кнопкой... --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
Спасибо.
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| bercut |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 15.8.2002 Где: Волжский Репутация: нет Всего: нет |
1) Для этого можно прописать путь и имя твоей проги в system.ini (а не win.ini) в строчке shell=твоя прога. Но при этом ты не загрузишь Explorer, т.е. у тебя уже не появится панель задач и кнопочка пуск. Можно также прописать загрузку проги в реестре, либо до загрузки Explorer.exe, либо после него. 2) Вот тебе исходник, который я уже здесь не один раз оставлял, читай чужие сообщения, а не только свои: DWORD (stdcall *) (DWORD, DWORD)) GetProcAddress (hInstKernel, "RegisterServiceProcess"); pRegisterServiceProcess (NULL, 1); FreeLibrary (hInstKernel); 3) Задача практически не выполнимая, если к компу будут иметь доступ спецы и смогут запускать любые проги, то достаточно написать маленькую программульку, которая будет грохать все и не поможет никакая проверка запущенных двух прог, которые проверяют друг друга на наличие в памяти. Если же доступ к запуску программ будет ограничен или будет сидеть обычный юзер, то используй как уже говорилось выше OnCloseQuery. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
2bercut:
2. Если бы еще и ты читал не токо свои сообщения, то увидел бы, что он уже разобрался. 3. Гришь достаточно написать программку и все закроется? может устроим войну программок, а? з.ы. это че это за программка такая, которая все закрывает? ExitWindows чтоли? -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| bercut |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 15.8.2002 Где: Волжский Репутация: нет Всего: нет |
Я не против, давай пиши свою прогу, а я тебе предоставлю свою и проверим, кто из нас прав. А что за программка, ты потом увидишь. Но сразу добавлю, что работать будет под 98 винду, под другие пока нет надобности писать. Хотя может и на других версиях будет работать, но сомневаюсь. |
|||
|
||||
| Baa |
|
|||
|
Unregistered |
Ну правильно, давай еще и в нулевое кольцо вылезем...
Давай уж стандратными средствами обходиться... з.ы. 98ого нету... так что не могу пользоваться всеми возможностями сей ОСи. |
|||
|
||||
| bercut |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 15.8.2002 Где: Волжский Репутация: нет Всего: нет |
Вот так всегда :-( Давай все равно пиши свою прогу, а я ее на 98 испытаю совместно со своей. ОК? |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Хорошо... как время свободное будет, так напишу... мыло на всяк случай свое дай.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 110 Регистрация: 28.8.2002 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Yes!!!! Назначайте секундантов !!! Устраиваем дуэль.... Да здравствует Дантес!!! --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
Вот началась 3-я мировая!
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| bercut |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 15.8.2002 Где: Волжский Репутация: нет Всего: нет |
Мое мыло: [email protected] А вообще оно есть на кнопочке "E-Mail". |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |