Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Три вопроса, Билдер 
:(
    Опции темы
Klin
  Дата 9.11.2002, 03:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: нет
Всего: 25



Как сделать, чтобы:
1)когда в винд входишь запускалась программа и пока она не закроется работу не начнёшь.
2)программу нельза было закрыть через Ctrl+Alt+Del.
3)программу можно было закрыть только кнопкой на форме.

Заранее спасибо!


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Vit
Дата 9.11.2002, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL WWW ICQ   Вверх
Klin
  Дата 9.11.2002, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: нет
Всего: 25



1) Насчёт вопросов понял - на будущее запомню
2)Windows 98
3)Ты всмысле в кнопку событие пихнуть?


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Dexter
Дата 9.11.2002, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



На форме событие onCloseQuery.
Когда юзер попытается выйти из проги произойдет то что ты там написал


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
Klin
  Дата 10.11.2002, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: нет
Всего: 25



Спасибо Daxter!
Но это в смыле вообще нельзя выйти?


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Vit
Дата 10.11.2002, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL WWW ICQ   Вверх
Klin
  Дата 10.11.2002, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: нет
Всего: 25



Странно onCloseQuery - не работает!


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Dexter
Дата 10.11.2002, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



А че ты там написал?


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
HexoGenus
  Дата 12.11.2002, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Цитата(Klin @ 10.11.2002, 10:55)
Странно onCloseQuery - не работает!

Для того что бы самому решить когда пользователю можно закрыть форму а когда нет можно обрабатывать событие формы:
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
bool clos;
…
// Выполняем вычисления и в зависимости от того хотим мы
// разрешить закрыть форму или ну его нафиг этого наглого пользователя :D
// присваиваем clos значение или true или false
Action=TCloseAction(clos);
}
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
Baa
Дата 13.11.2002, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



1. Возьми и переправь в win.ini (кажется) значение оболочки с explorer.exe на твою прогу. Во завершению себя запускай explorer.exe
2. Самое надежное - это вытащить эти клавиши из клавиатуры и спрятать их подальше.
3. Убрать все лишнии кнопки с формы (крестик и систем меню), а еще можно заоодно с контролом альтом и делом и ф4 вытащить.
Никак шелл для клуба пишешь? :D


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
HexoGenus
  Дата 13.11.2002, 18:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Klin @ 08.11.2002, 19:09)
Как сделать, чтобы:
2)программу нельза было закрыть через Ctrl+Alt+Del.

В 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
Кстати в списке иконок для сообщения не хватает растопыренных пальцев :D
  Вверх
Klin
  Дата 22.11.2002, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: нет
Всего: 25



Спосибо, проверю!


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Klin
  Дата 22.11.2002, 05:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: нет
Всего: 25



Не катит, даже после изменений не катит!
До изменений куча ошибок, а после дохимичелся, вообще форма изчезает!


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Klin
  Дата 23.11.2002, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: нет
Всего: 25



Сделал!
Код
typedef DWORD (WINAPI *LPREGISTERSERVICEPROCESS) (DWORD, DWORD);
   HINSTANCE h_i;
   LPREGISTERSERVICEPROCESS lpRegProc;
   h_i = LoadLibrary("KERNEL32.DLL");

   if (h_i)
   {
       lpRegProc = (LPREGISTERSERVICEPROCESS)GetProcAddress(h_i, "RegisterServiceProcess");
       if (lpRegProc)
       {
           lpRegProc(NULL, 1);
       }
       FreeLibrary(h_i);
   }



--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Klin
  Дата 23.11.2002, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: нет
Всего: 25



1) HexoGenus (программу можно было закрыть только кнопкой на форме) так форму вообще не могу закрыть!
----
2)Baa
-
1) я пробовал, но просто запускает (тоже самое, что и через автозагузку).
3)надеюсь не будет отвлечение от темы, если я спрошу "Как?"


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
HexoGenus
  Дата 23.11.2002, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Цитата(Klin @ 23.11.2002, 08:24)
1) HexoGenus (программу можно было закрыть только кнопкой на форме) так форму вообще не могу закрыть!

Как то ты запутанно стал вопросы задавать...  ;-)

По поводу Ctrl+Alt+Del пример приведенный мною у меня нормально работает правда у меня первая версия Билдера, но я описание брал с форума значит должно работать и в более старших версиях...
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
HexoGenus
Дата 23.11.2002, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Хмммм... какой то бардак копирую код из билдера в форум а из кода при нажатии на кнопку отправить вырезается кусок в середине ???
Прийдется словами описывать  :angry:
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
HexoGenus
Дата 23.11.2002, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



В описании класса формы (Unit1.h) в разделе
public:
вставляем
bool bCloseAccess;
при создании формы (Unit1.cpp) в событии FormCreate вставляем
// Запрет на закрытие формы кому попало...
bCloseAccess=false;
Создаем кнопку и в обработчике Button1Click пишем
// Уж мы то знаем когда можно закрыть
bCloseAccess=true;
// Закрываем форму
Close();
И в обработчике FormClose пишем
Action= TCloseAction(bCloseAccess);

В результате форма будет закрываться только конкретно этой кнопкой... :D
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
Klin
  Дата 23.11.2002, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: нет
Всего: 25



Спасибо.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
bercut
Дата 29.11.2002, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 15.8.2002
Где: Волжский

Репутация: нет
Всего: нет



Цитата(Klin @ 08.11.2002, 19:09)
Как сделать, чтобы:
1)когда в винд входишь запускалась программа и пока она не закроется работу не начнёшь.
2)программу нельза было закрыть через Ctrl+Alt+Del.
3)программу можно было закрыть только кнопкой на форме.

Заранее спасибо!

1) Для этого можно прописать путь и имя твоей проги в system.ini (а не win.ini) в строчке shell=твоя прога. Но при этом ты не загрузишь Explorer, т.е. у тебя уже не появится панель задач и кнопочка пуск.
Можно также прописать загрузку проги в реестре, либо до загрузки Explorer.exe, либо после него.
2) Вот тебе исходник, который я уже здесь не один раз оставлял, читай чужие сообщения, а не только свои:
 DWORD (stdcall *) (DWORD, DWORD))
 GetProcAddress (hInstKernel, "RegisterServiceProcess");
 pRegisterServiceProcess (NULL, 1);
 FreeLibrary (hInstKernel);
3) Задача практически не выполнимая, если к компу будут иметь доступ спецы и смогут запускать любые проги, то достаточно написать маленькую программульку, которая будет грохать все и не поможет никакая проверка запущенных двух прог, которые проверяют друг друга на наличие в памяти.
Если же доступ к запуску программ будет ограничен или будет сидеть обычный юзер, то используй как уже говорилось выше OnCloseQuery.
PM MAIL WWW ICQ   Вверх
Baa
Дата 29.11.2002, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



2bercut:
2. Если бы еще и ты читал не токо свои сообщения, то увидел бы, что он уже разобрался.
3. Гришь достаточно написать программку и все закроется? может устроим войну программок, а?
з.ы. это че это за программка такая, которая все закрывает? ExitWindows чтоли?


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
bercut
  Дата 29.11.2002, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 15.8.2002
Где: Волжский

Репутация: нет
Всего: нет



Цитата(Baa @ 29.11.2002, 00:48)
2bercut:
2. Если бы еще и ты читал не токо свои сообщения, то увидел бы, что он уже разобрался.
3. Гришь достаточно написать программку и все закроется? может устроим войну программок, а?
з.ы. это че это за программка такая, которая все закрывает? ExitWindows чтоли?

Я не против, давай пиши свою прогу, а я тебе предоставлю свою и проверим, кто из нас прав. А что за программка, ты потом увидишь. ;-)
Но сразу добавлю, что работать будет под 98 винду, под другие пока нет надобности писать. Хотя может и на других версиях будет работать, но сомневаюсь.
PM MAIL WWW ICQ   Вверх
Baa
Дата 30.11.2002, 00:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ну правильно, давай еще и в нулевое кольцо вылезем...
Давай уж стандратными средствами обходиться...
з.ы. 98ого нету... так что не могу пользоваться всеми возможностями сей ОСи.
  Вверх
bercut
  Дата 30.11.2002, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 15.8.2002
Где: Волжский

Репутация: нет
Всего: нет



Цитата(Guest @ 29.11.2002, 16:52)
Ну правильно, давай еще и в нулевое кольцо вылезем...
Давай уж стандратными средствами обходиться...
з.ы. 98ого нету... так что не могу пользоваться всеми возможностями сей ОСи.

Вот так всегда :-(
Давай все равно пиши свою прогу, а я ее на 98 испытаю совместно со своей. ОК?
PM MAIL WWW ICQ   Вверх
Baa
Дата 30.11.2002, 05:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Хорошо... как время свободное будет, так напишу... мыло на всяк случай свое дай.


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
HexoGenus
  Дата 30.11.2002, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Цитата(Baa @ 29.11.2002, 21:02)
Хорошо... как время свободное будет, так напишу... мыло на всяк случай свое дай.

Yes!!!!
Назначайте секундантов !!!
Устраиваем дуэль....
Да здравствует Дантес!!!
:D
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
Klin
  Дата 2.12.2002, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: нет
Всего: 25



Вот началась 3-я мировая!


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
bercut
  Дата 3.12.2002, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 15.8.2002
Где: Волжский

Репутация: нет
Всего: нет



Цитата(Baa @ 29.11.2002, 21:02)
Хорошо... как время свободное будет, так напишу... мыло на всяк случай свое дай.

Мое мыло: [email protected]
А вообще оно есть на кнопочке "E-Mail".
PM MAIL WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0692 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.