$Topic = InputBox('', '', '')
MsgBox(0, '', $Topic)
$Topic = StringStripWS($Topic, 8)
If StringInStr($Topic, 'ю') Then $Topic = StringReplace($Topic, 'ю', '.')
If StringInStr($Topic, ',') Then $Topic = StringReplace($Topic, ',', '.')
MsgBox(0, '', $Topic)
madmasles сказал(а):If StringInStr($Topic, 'ю') Then $Topic = StringReplace($Topic, 'ю', '.')
Garrett сказал(а):ControlSend("", "", "", Number($Topic))
$Topic = "10000.10"
MsgBox(0,"", StringLeft(StringFormat("%f",$Topic),StringLen($Topic)))
StringFormat("%.2f",$Topic)
#Include <WinAPIEx.au3>
$hWnd = ControlGetHandle('', '', '')
If BitAND(_WinAPI_GetKeyboardLayout($hWnd), 0xFFFF) = 0x0419 Then
$Topic = StringReplace($Topic, '.', '/')
EndIf
ControlSend($hWnd, '', '', $Topic)
#include <WinAPIEx.au3>
#include <GUIConstantsEx.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 350, 256, -1, -1)
$Input1 = GUICtrlCreateInput("", 32, 8, 257, 21)
$Button1 = GUICtrlCreateButton("Click", 120, 56, 113, 65)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$sLang = Hex(_WinAPI_GetKeyboardLayout($Form1), 4)
Run('notepad.exe')
WinWait('[CLASS:Notepad]')
If Not WinActive('[CLASS:Notepad]') Then WinActivate('[CLASS:Notepad]')
WinWaitActive('[CLASS:Notepad]')
$hHandle = WinGetHandle('[CLASS:Notepad]')
_WinAPI_SetKeyboardLayout($hHandle, '0x' & $sLang)
ControlSend('[CLASS:Notepad]', '', '[CLASS:Edit; INSTANCE:1]', GUICtrlRead($Input1))
EndSwitch
WEnd
If BitAND(Get[b]Current[/b]Layout($hWnd), 0xFFFF) = 0x0419 And Get[b]Default[/b]Layout() = 0 Then
$Topic = StringReplace($Topic, '.', '/')
Opt("WinTextMatchMode", 2)
$var = "1000.10"
WinActivate("AkelPad")
ControlSend("AkelPad", "", "", $var)
Opt("WinTextMatchMode", 2)
$var = "1000.10"
WinActivate("AkelPad")
Global $hWnd = WinGetHandle('')
$def_lang = GetCurrentLayout($hWnd) ; запоминаем текущую раскладку
if GetDefaultLayout() = 1 Then
SetCurrentLayout('0419', $hWnd) ; если раскладка по умолчанию русская, то ставим текущую русскую
Else
SetCurrentLayout('0409', $hWnd) ; иначе - ставим английскую
EndIf
ControlSend("", "", "", $var) ; вставляем текст в "правильной" раскладке
SetCurrentLayout($def_lang, $hWnd) ; возвращаем раскладку до махинаций
Func GetCurrentLayout($hWnd)
Local $Ret = DllCall('user32.dll', 'long', 'GetWindowThreadProcessId', 'hwnd', $hWnd, 'ptr', 0)
$Ret = DllCall('user32.dll', 'long', 'GetKeyboardLayout', 'long', $Ret[0])
Return Hex($Ret[0], 4)
EndFunc
Func GetDefaultLayout()
If @KBLayout = 00000419 Or @KBLayout = 0419 Then Return 1
If @KBLayout = 00000409 Or @KBLayout = 0409 Or @KBLayout = 0809 Or @KBLayout = 00000809 Then Return 0
EndFunc
Func SetCurrentLayout($sLayout, $hWnd)
Local $Ret = DllCall('user32.dll', 'long', 'LoadKeyboardLayout', 'str', StringFormat('%08s', StringStripWS($sLayout, 8)), 'int', 0)
DllCall('user32.dll', 'ptr', 'SendMessage', 'hwnd', $hWnd, 'int', 0x0050, 'int', 1, 'int', $Ret[0])
EndFunc
$sLang = Hex(_WinAPI_GetKeyboardLayout($Form1), 4)
_WinAPI_SetKeyboardLayout($hHandle, '0x' & $sLang)
$var = "Иванов И.И."
Send(StringReplace($var,".","{ASC 0x002E}"))