Get Localized Strings From Windows System DLLs
Posted: Wed Nov 16, 2011 11:33 am
May be useful to build simple custom requesters (like MessageRequester).
Could you test if it works on Vista / Se7en ?
Code: Select all
;
; Get Localized Strings From Windows System DLLs
;
;{ some valid uIDs ...
; USER32
#LocalString_Error = 2
#LocalString_OK = 800
#LocalString_Cancel = 801
#LocalString_Abort = 802
#LocalString_Retry = 803
#LocalString_Ignore = 804
#LocalString_Yes = 805
#LocalString_No = 806
#LocalString_Close = 807
#LocalString_Help = 808
#LocalString_TryAgain = 809
#LocalString_Continue = 810
#LocalString_Minimize = 900
#LocalString_Maximize = 901
#LocalString_RestoreUp = 902
#LocalString_RestoreDown = 903
; COMDLG32
#LocalString_Save = 369
#LocalString_Open = 370
#LocalString_Print = 371
#LocalString_SaveAs = 385
; SHELL32
#LocalString_File = 4130
#LocalString_Folder = 4131
#LocalString_Move = 4144
#LocalString_Copy = 4145
#LocalString_Delete = 4146
#LocalString_Rename = 4147
;}
Procedure.s GetLocaleString(uID) ; Get Localized Strings ['' if invalid uID]
;
Protected LocaleString.s, hInstance, *Buffer, WinLibrary.s
;
If uID >= #LocalString_File
WinLibrary = "shell32"
ElseIf uID >= #LocalString_Save And uID <= #LocalString_SaveAs
WinLibrary = "comdlg32"
Else
WinLibrary = "user32"
EndIf
;
hInstance = LoadLibraryEx_(WinLibrary, 0, #LOAD_LIBRARY_AS_DATAFILE)
If hInstance
;
*Buffer = AllocateMemory(256)
If *Buffer
;
If LoadString_(hInstance, uID, *Buffer, 255)
LocaleString = PeekS(*Buffer)
LocaleString = RemoveString(LocaleString, "&")
EndIf
FreeMemory(*Buffer)
;
EndIf
;
FreeLibrary_(hInstance)
;
EndIf
;
ProcedureReturn LocaleString
;
EndProcedure
Debug GetLocaleString(#LocalString_Yes) ; -> Yes / Oui / Ja / ...
Debug GetLocaleString(#LocalString_Print) ; -> Print / Imprimer ...