MvGulik Posted January 17, 2012 Share Posted January 17, 2012 (edited) Have not looked at it yet (trying to tame some Pythons). But is it possible to detect what (windows-) language setting a app is using. (if you have windows setup to have more then one language settings.) Having a minor issue with Scite(4AutoIt3) switching its language on its own (and than also being locked to that language setting.) Figure having something popup when it happens is in need if I like to figure out what the trigger(s) might be. Edited January 17, 2012 by MvGulik "Straight_and_Crooked_Thinking" : A "classic guide to ferreting out untruths, half-truths, and other distortions of facts in political and social discussions.""The Secrets of Quantum Physics" : New and excellent 2 part documentary on Quantum Physics by Jim Al-Khalili. (Dec 2014) "Believing what you know ain't so" ... Knock Knock ... Link to comment Share on other sites More sharing options...
Developers Jos Posted January 17, 2012 Developers Share Posted January 17, 2012 You mean @OSLang or something else? SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
MvGulik Posted January 17, 2012 Author Share Posted January 17, 2012 (edited) I'll try that one, and @KBLayout.Mmm, don't think @OSLang will work. as its probably returns the global window language, not the used language-setting ... but I try anyway. Edited January 17, 2012 by MvGulik "Straight_and_Crooked_Thinking" : A "classic guide to ferreting out untruths, half-truths, and other distortions of facts in political and social discussions.""The Secrets of Quantum Physics" : New and excellent 2 part documentary on Quantum Physics by Jim Al-Khalili. (Dec 2014) "Believing what you know ain't so" ... Knock Knock ... Link to comment Share on other sites More sharing options...
MvGulik Posted January 17, 2012 Author Share Posted January 17, 2012 (edited) _WinAPI_GetKeyboardLayout($hWnd) [WinAPIEx UDF] should/will do the trick.---Yep/solved.Update(+code|1.3): Not a Scite issue ... But a general windows issue/feature. expandcollapse popup;; (v1.3) #include <WinAPIEx.au3> main() Exit Func main() ;; mmm ... issue ... not sure if target case will actual return a detectable language change. ;; - behavior might change without actual returning a detectable state change. ... [todo] If MsgBox(1, 'MsgBox', 'Detect Language Change: Start?') = 1 Then Local Const $NL = @LF Local Const $iApps = 2 Local Const $aCLASS[$iApps] = ['[CLASS:SciTEWindow]', '[CLASS:Chrome_WidgetWin_0]'] Local $ahWnd[$iApps] = [0, 0], $aKeyboard[$iApps] = [0, 0], $aKeyboard_old = $aKeyboard Local $sClass, $hWnd, $Keyboard, $Keyboard_old, $fUpdate Local $sTooltip = '' Local $fQuit = False Do $sTooltip = '' For $id = 0 To $iApps - 1 ;; retrieve array data. (minimize general array use in main code part.) $hWnd = $ahWnd[$id] $Keyboard = $aKeyboard[$id] $Keyboard_old = $aKeyboard_old[$id] $sClass = $aCLASS[$id] $fUpdate = False ;; detect new target window. (not really intended/tested for multi-win-cases ... ok so far.) If Not $hWnd And WinExists($sClass) Then $hWnd = WinGetHandle($sClass) ;; error check. If Not $hWnd Then If MsgBox(1, 'MsgBox', '$hWnd = WinGetHandle(' & $sClass & ') failed.') <> 1 Then $fQuit = True ExitLoop 2 EndIf EndIf $sTooltip &= 'New: ' & $sClass & $NL $fUpdate = True ElseIf $hWnd And Not WinExists($hWnd) Then ;; detect removal of target window. $hWnd = 0 $sTooltip &= 'Gone: ' & $sClass & $NL $fUpdate = True EndIf ;; detect language state change on target window. If $hWnd Then $Keyboard = _WinAPI_GetKeyboardLayout($hWnd) If _ $Keyboard And $Keyboard_old And _ $Keyboard <> $Keyboard_old Then If 1 Then $sTooltip &= 'Change: ' & $sClass & $NL Else If MsgBox(1, 'MsgBox', 'Language Change on ' & $sClass & ' !') <> 1 Then $fQuit = True ExitLoop 2 EndIf EndIf $Keyboard_old = $Keyboard $fUpdate = True ElseIf $Keyboard <> $Keyboard_old Then $Keyboard_old = $Keyboard $fUpdate = True EndIf EndIf ;; update arrays If $fUpdate Then $ahWnd[$id] = $hWnd $aKeyboard[$id] = $Keyboard $aKeyboard_old[$id] = $Keyboard_old ;$fUpdate = False EndIf Next If $sTooltip Then TrayTip('Detect Language Change', $sTooltip, 3) ;$sTooltip = '' EndIf Sleep(1000) Until $fQuit MsgBox(0, 'MsgBox', 'Detect Language Change: Exit') EndIf EndFunc---mmm, CTRL+SHIFT <> Using Language Bar. Not sure why, or what I'm missing, Don't really care either (for later). Know now why and how to (normally) undo it again. [solved]x2 Edited January 21, 2012 by MvGulik "Straight_and_Crooked_Thinking" : A "classic guide to ferreting out untruths, half-truths, and other distortions of facts in political and social discussions.""The Secrets of Quantum Physics" : New and excellent 2 part documentary on Quantum Physics by Jim Al-Khalili. (Dec 2014) "Believing what you know ain't so" ... Knock Knock ... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now