1

Тема: AHK: SetCaretBlinkTime игнорируется в Firefox 4

Использую скрипт для изменения вида курсора и скорости моргания каретки при переключении раскладки клавиатуры.
Работает везде (проводник, блокнот, паинт и пр.), кроме как в Firefox. Раскладку и вид курсора он меняет,
а вот моргание полностью игнорирует - в лисе работают стандартные параметры в любых textbox и в строках поиска.
Выгрузил все остальные скрипты и проги, которые могли бы конфликтовать, оставил только нижеприведенную часть,
отключил все дополнения в лисе - ноль. На англоязычном форуме решения не нашел.


DetectHiddenWindows, On
#NoEnv
#Persistent

RCtrl::
  DllCall("SetCaretBlinkTime", UInt, 450)

  SetFormat, Integer, H
  Locale1=0x4090409  ; Английский (американский).
  Locale2=0x4190419  ; Русский.
  WinGet, WinID,, A
  ThreadID:=DllCall("GetWindowThreadProcessId", "Int", WinID, "Int", "0")
  InputLocaleID:=DllCall("GetKeyboardLayout", "Int", ThreadID)
  if(InputLocaleID=Locale1)
{
	DllCall("SetCaretBlinkTime", UInt, 200)

	SendMessage, 0x50,, % Locale2,, A
	Cursor = %A_ScriptDir%\RuCursor.cur
	CursorHandle := DllCall( "LoadCursorFromFile", Str,Cursor )
	Cursors = 32512,32514,32515,32516,32640,32641,32642,32643,32644,32645,32646,32648,32650,32651
	Loop, Parse, Cursors, `,
		{
	DllCall( "SetSystemCursor", Uint,CursorHandle, Int,A_Loopfield )
		}
	Cursor1 = %A_ScriptDir%\RuLink.cur
	CursorHandle := DllCall( "LoadCursorFromFile", Str,Cursor1 )
	Cursors = 32649
	Loop, Parse, Cursors, `,
		{
	DllCall( "SetSystemCursor", Uint,CursorHandle, Int,A_Loopfield )
		}
	Cursor1 = %A_ScriptDir%\TextCur.cur
	CursorHandle := DllCall( "LoadCursorFromFile", Str,Cursor1 )
	Cursors = 32513
	Loop, Parse, Cursors, `,
		{
	DllCall( "SetSystemCursor", Uint,CursorHandle, Int,A_Loopfield )
		}
	Return
}
  else if(InputLocaleID=Locale2)
{
	SendMessage, 0x50,, % Locale1,, A
	SPI_SETCURSORS := 0x57
	DllCall( "SystemParametersInfo", UInt,SPI_SETCURSORS, UInt,0, UInt,0, UInt,0 )
}
Return

2

Re: AHK: SetCaretBlinkTime игнорируется в Firefox 4

FF использует не стандартные контролы, а свои само рисованные, по этому работа с ними затруднена. Не проверял ваш скрипт, но проверил само поведение FF на изменение скорости мерцания в системе. Если другие программы подхватывают мгновенно, то FF считывает значение мерцания в системе только единожды, при прорисовке каждого нового контрола. Как бороться, скажу честно незнаю, но без костыля нацеленного именно на FF очевидно никак.