![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Переключается раскладки клавиатуры через Caps-Lock. 
		
	
		
		
		
		
			
		
		
		
		
		
			Лампочка Scroll-lock'а - отображает текущий язык ввода. Непосредственно режим caps-lock включается/выключается клавишами shift+caps-lock. Написано на основе lswitch + KbLangLED, но использование 2 утилит мне не понравилось, поэтому решил совместить их в одной программе. скачать исходники можно отсюда Последний раз редактировалось SCrat.ORS, 06.10.2012 в 01:52.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Во-первых, выложенный исходник не компилируется, потому как содержит ошибки. И часть ошибок намекает на то, что код переводили с C++.  
		
	
		
		
		
		
		
	
		
		
	
	
	![]() Во-вторых, после исправления ошибок мне удалось собрать программку с более чем в 4 раза меньшим размером -- с модулями KOL. Для мелких утилит -- самое то. Работоспособность вроде сохранилась. Какая лицензия у исходника, кстати?  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Я писал на Делфи 2006, все компилируется без проблем. в коде разница только в этом? Код: 
	{$IFDEF Tricks}
  HeapMM,
{$ENDIF}И что это даёт?... З.Ы. скомпилировав твоё вышло почти 83 кб... чем компилируешь ты? З.Ы.Ы. С ужосом заметил, что выложил не ту версию исходников, перезалил туда же. Лицензия - с указанием моего авторства в составе желательно. А так свободная - мне не жалко. Последний раз редактировалось SCrat.ORS, 05.10.2012 в 23:11.  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Цитата: 
	
  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 KOL ... хм не слышал, почитаю гугл =) на API - был вариант сделать,. но как-то влом расписывать потоки  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Действительно код писан на С, а потом перенесён в Дельфи без понимания сути. После исправления ошибок (Hi Freeman)  
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	  , скомпилировался. | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 3 пост.  | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Ну тогда объясни, зачем здесь & 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Код: 
	  while GetMessage(&msg, 0, 0, 0) do
  begin
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  end; | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Да, этот момент переехал вместе с Си... как то упустил. Вообще тогда меня больше мучал вопрос, как сделать Хуки без ДЛЛ, и почему когда Хук работает без Длл, и при вставке кода ЛЕД в цикл GetMessage, хук переставал работать?...  | 
| 
		 
			 
			#10  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Потому что DLL может "встраиваться" в "чужие" процессы, exe-шникам это запрещено. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#11  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Да, но ведь работает в ехе! 
		
	
		
		
		
		
			
		
		
		
		
		
			Вообще как я понял, для работы хука надо просто запретить трансляцию месагов,... Последний раз редактировалось SCrat.ORS, 05.10.2012 в 23:35.  | 
| 
		 
			 
			#12  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 При запуске из консоли (FAR), скрывает значок смены "языка" и Scroll-lock не переключается. 
		
	
		
		
		
		
			
		
		
		
		
		
			Цитата: 
	
 Последний раз редактировалось angvelem, 05.10.2012 в 23:46.  | 
| 
		 
			 
			#13  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 быть может при активном окне FAR консоль использует свои хуки? вот идея которую я не смог реализовать в сей программке: включение/выключения режима CAPS-LOCK при нажатии shift + caps-lock, или двойным нажатием на caps-lock. При реализации получалось что при определённых моментах срабатывает, но после включения CAPS-LOCK назад он не выключался, или выключался но после того как сменишь раскладку... вообщем бред какой то получался. так я и сдался.  | 
| 
		 
			 
			#14  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Ну правильно, у тебя проверяется только на CapsLock без учёта других клавиш 
		
	
		
		
		
		
			
		
		
		
		
		
			Код: 
	fEatKeystroke := (p^.vkCode = 20); Цитата: 
	
 Последний раз редактировалось angvelem, 06.10.2012 в 00:01.  | 
| 
		 
			 
			#15  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Конечно, я же убрал другие проверки клавиш перед тем как выложить исходник. Пробывал всталял проверки шифта, или счетчик нажатий капса, что бы не только можно было переключит раскладку, но и включить капс. И мне показалось, что при включенном капсе скан коды как-будто изменяются. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 |