Creat0R
Цитата:
у тебя случайно на клаве нет лишних кнопочек? например Power/Sleep »
|
угу, кнопки питания не блокируются... на MSDN по этому поводу написано, что эти события не доходят до API, т.е. их нужно перехватывать раньше - в драйвере клавиатурного фильтра:
How to disable the keyboard Sleep button with a filter driver... хотя можно попытаться порулить политикой питания, на ентот счет есть свои API и, к примеру, менять эти настройки на время блокировки
Цитата:
я не ставил ещё последнюю версию »
|
не вопрос - вот вариант для версии 3.2.8.1, там в общем все довольно просто... объединил заодно две функции в одну - теперь кодировку текста можно задавать прямо в параметрах (для текста в UTF8 - 65001)... Кстати, обнаружил что, в 10-ке алгоритм более продуманный в плане производительности.
Код:

Func _GUICtrlStatusBarSetTextEx($h_StatusBar, $s_Data = "", $i_Part = 0, $iCode = 0)
If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
If Not _IsClassName ($h_StatusBar, "msctls_statusbar32") Then Return SetError(-1, -1, False)
Local $ret = DllCall("Kernel32.dll", "int", "MultiByteToWideChar", _
"int", $iCode, "int", 0, _
"str", $s_Data, "int", -1, _
"ptr", 0, "int", 0)
If $ret[0]=0 Then Return SetError(-1, -1, 0)
Local $struct_String = DllStructCreate("byte[" & $ret[0]*2+2 & "]")
Local $sBuffer_pointer = DllStructGetPtr($struct_String)
Local $struct_MemMap
Local $Memory_pointer = _MemInit ($h_StatusBar, DllStructGetSize($struct_String), $struct_MemMap)
If @error Then
_MemFree ($struct_MemMap)
Return SetError(-1, -1, 0)
EndIf
$ret = DllCall("Kernel32.dll", "int", "MultiByteToWideChar", _
"int", $iCode, "int", 0, _
"str", $s_Data, "int", -1, _
"ptr", DllStructGetPtr($struct_String), "int", $ret[0])
If $ret[0]=0 Then
_MemFree ($struct_MemMap)
Return SetError(-1, -1, 0)
EndIf
_MemWrite ($struct_MemMap, $sBuffer_pointer)
If @error Then
_MemFree ($struct_MemMap)
Return SetError(-1, -1, 0)
EndIf
$ret = _SendMessage($h_StatusBar, $SB_SETTEXT+10, $i_Part, $Memory_pointer)
If @error Then
_MemFree ($struct_MemMap)
Return SetError(-1, -1, 0)
EndIf
_MemFree ($struct_MemMap)
Return $ret
EndFunc ;==>_GUICtrlStatusBarSetTextEx