![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
чайник
Пользователь
Регистрация: 24.06.2010
Сообщений: 44
|
![]()
Здравствуйте, у меня прога виснет из-за этой процедуры . Если закоментировать оператор goto тогда работает.
procedure TForm1.WM_HotKeyHandler (var Message: TMessage); var idHotKey: integer; fuModifiers: word; uVirtKey: word; label m; begin idHotkey:= Message.wParam; fuModifiers:= LOWORD(Message.lParam); uVirtKey:= HIWORD(Message.lParam); i f (fuModifiers = MOD_ALT) AND (uVirtKey = VK_F10) then caption:='альт+ф10 нажата'; m: sleep(2000); keybd_event(Ord('K'), 0, 0, 0); sleep(500); keybd_event(Ord('k'), 0, KEYEVENTF_KEYUP, 0); sleep(500); keybd_event(Ord('K'), 0, 0, 0); sleep(500); keybd_event(Ord('k'), 0, KEYEVENTF_KEYUP, 0); goto m; inherited; end; Последний раз редактировалось tred; 27.06.2010 в 08:25. |
![]() |
![]() |
![]() |
#2 |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
![]()
Не много не понятно, что вы хотите от goto. Если там одно действие sleep(500), то как бы sleep - это зависание компьютера на некоторое время.
И ещё: объявление лэйблов, как правило, происходит до var'а. |
![]() |
![]() |
![]() |
#3 |
чайник
Пользователь
Регистрация: 24.06.2010
Сообщений: 44
|
![]()
я хочу чтобы этот цикл повторялся до наступления какого либо события но после запуска прога не реагирует ни на какие события приходится выключать через диспетчер задач
|
![]() |
![]() |
![]() |
#4 |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
![]()
Так используйте не лэйблы, а циклы. До наступления какого события вы хотите повторять?
|
![]() |
![]() |
![]() |
#5 | |
чайник
Пользователь
Регистрация: 24.06.2010
Сообщений: 44
|
![]() Цитата:
procedure TForm1.Button2Click(Sender: TObject); begin UnregisterHotKey(handle, keyid); GlobalDeleteAtom(keyid); caption:='ловушка отключена'; end; убрал слип так вобще весь компьютер повис мне кажется буфер клавиатуры переполняется, может есть какаянибудь функция для его очистки Последний раз редактировалось tred; 27.06.2010 в 09:34. |
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 20.06.2008
Сообщений: 95
|
![]()
Попробуй доработать программу, вставив в нее команду Application.ProcessMessages():
Код:
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)
![]() |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 20.06.2008
Сообщений: 95
|
![]()
Дело в том, что Windows ждет пока накопятся задачи в очереди а не выполняет их сразу, Application.ProcessMessages() заставляет выполнить все задачи которые накопились в данный момент. Более подробно смотри здесь: http://www.delphisources.ru/pages/fa...smessages.html
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)
![]() |
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
![]()
Команда перехода (в данном случае безусловнрго) должна применяться по какому либо событию или условию, которое затем должно измениться. А здесь пример классического бесконечного зацикливания.
Как пример простенький код Код:
А пример показан для правильного применения оператора Goto. Добавлю, что оператор Goto обычно применяется, когда требуется организовать выход из большого количества вложенных циклов или вложенных условных операторов вида if ...then
И не сомневайся даже ... отдых - кайф, работа - лажа!
|
![]() |
![]() |
![]() |
#9 |
чайник
Пользователь
Регистрация: 24.06.2010
Сообщений: 44
|
![]()
всем спасибо получилось )) с оператором Application.ProcessMessages();
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
На музыке виснет ноутбук. | ariya | Компьютерное железо | 8 | 23.12.2009 08:26 |
Помогите понять почему прога виснет | Asira | Помощь студентам | 5 | 21.12.2009 22:57 |
Виснет автофильтр | Virtuoz | Microsoft Office Excel | 1 | 15.12.2009 11:46 |
Виснет ноут. | Небесный | Компьютерное железо | 4 | 29.04.2009 00:40 |
logonui- виснет :_( | steck | Свободное общение | 0 | 03.09.2007 16:38 |