Авторизация

Логин: Пароль:
Регистрация Забыли свой пароль?

Как сделать чтобы программа не закрывалась по CTRL+C?

Страницы: 1
Как сделать чтобы программа не закрывалась по CTRL+C?
Кто-нибудь знает способ?

На Win32/Intel я хочу чтобы при нажатии CTRL+C выполнялась функция копирования, а не остановки программы. Ведь пользователи в этой ОС привыкли пользоваться CTRL+C именно для копирования, и обычно не ожидают, что программа закроется после нажатия. Linux пользователи то давно отвыкли "копировать" по CTRL+C в консоли smile:D С ними такой проблемы нет smile:)
Так может мне кто-нибудь здесь помочь с этим вопросом?

Ну, или может кто-то знает другие хорошие команды для "Вырезать", "Копировать", "Вставить", которыя я мог бы использовать? Как насчет например F2-копировать, F3-вырезать, F4-вставить, удобно ли это будет?

Заранее спасибо за помощь.
Цитата
Как насчет например F2-копировать, F3-вырезать, F4-вставить, удобно ли это будет?

Использовать можно, но конечно надо какую-нибудь подсказку пользователям на экране вывести... Можешь еще подумать об использовании сочетаний CTRL+Ins для копировать, SHIFT-Del для вырезать and SHIFT+Ins для вставить. Они использовались во времена DOS, но и сейчас все еще поддерживаются многими windows-программами.
Цитата
Ну, или может кто-то знает другие хорошие команды для "Вырезать", "Копировать", "Вставить", которыя я мог бы использовать? Как насчет например F2-копировать, F3-вырезать, F4-вставить, удобно ли это будет?


Думаю, это не очень хорошая идея, всё-таки лучше всего будет использовать стандартные CTRL+C/V/X. Не надо мучать людей, заставляя привыкать к новым сочетаниям клавиш для стандартных действий...

В любом случае, блокировать закрытие программы по CTRL+C можно. Вот пример программы. Если хотите лучше понять, как она работает - смотрите справку по WinApi функции SetConsoleCtrlHandler.
Код
program Ctrl-C_Test;

uses
  Crt, Windows;

function NewHandlerRoutine(ASignal: DWord): Boolean;
begin
     if (ASignal = CTRL_C_EVENT) then
     begin
          Result := True;
          // Paste From Clipboard
     end else
        Result := False;
end;

begin
     SetConsoleCtrlHandler(@NewHandlerRoutine, True);

     repeat
           Sleep(100);
     until (KeyPressed);
end.
Владислав, почему-то функциональные клавиши с FAR-manager ассоциируются...
Сергей, соглашусь с вами, можно сделать через Ins

А вообще, если не путаю, отключить прерывание программы можно прописав настройки в config.sys.
Вроде бы через команду break on/off
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)