Вам следует скачать файл sql для этого wordpress и заменить старый URL новым URL, например, « http://example.com » на « http://example.com/blog [ 111] "
Ваше объявление для ActivateKeyboardLayout является на самом деле неправильным. Для 32-разрядных систем Ваш код должен быть чем-то вроде этого:
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, _
ByVal flags As Long) As Long
Const aklPUNJABI As Long = &H4460446
Dim oldLayout as Long
oldLayout = ActivateKeyboardLayout(aklPUNJABI, 0)
If oldLayout = 0 Then
'Oops an error'
Else
'Save old layout for later restore?'
End If
С 64 разрядностями из операционной системы является определенный отвлекающий маневр в этом случае. Так как Вы запускаете приложение VBA, оно должно работать как 32-разрядное приложение независимо от ОС. Я подозреваю, что Ваша проблема может состоять в том, что в Вашей системе Vista панджабская раскладка клавиатуры, которую Вы хотите, не загружается. ActivateKeyboardLayout будет только работать для активации раскладки клавиатуры, которая уже загружается. По некоторым причинам разработчики этого API чувствовали, что отказ из-за раскладки клавиатуры, не существующей, не был ошибкой, таким образом, LastDllError не установлен. Можно хотеть изучить использование LoadKeyboardLayout для этого типа ситуации.
Править: Для проверения этого дважды, раскладка клавиатуры, которую Вы пытаетесь получить, на самом деле загружается, можно использовать это:
Private Declare Function GetKeyboardLayoutList Lib "user32" (ByVal size As Long, _
ByRef layouts As Long) As Long
Dim numLayouts As Long
Dim i As Long
Dim layouts() As Long
numLayouts = GetKeyboardLayoutList(0, ByVal 0&)
ReDim layouts(numLayouts - 1)
GetKeyboardLayoutList numLayouts, layouts(0)
Dim msg As String
msg = "Loaded keyboard layouts: " & vbCrLf & vbCrLf
For i = 0 To numLayouts - 1
msg = msg & Hex(layouts(i)) & vbCrLf
Next
MsgBox msg
Это - просто слепое предположение, но Вы попытались запустить свое приложение как повышенный администратор, чтобы видеть, имеет ли это значение? Каков код ошибки / значение GetLastError?
Сделал Вы пробуете строку .NET (как в сценарии VB.Net или тех отрывках) как:
InputLanguage.CurrentInputLanguage =
InputLanguage.FromCulture(New System.Globalization.CultureInfo("ar-EG"))
InputLanguage должен поддерживаться для Vista64 с.Net3.5
Код VB.Net:
Public Sub ChangeInputLanguage(ByVal InputLang As InputLanguage)
If InputLanguage.InstalledInputLanguages.IndexOf(InputLang) = -1 Then
Throw New ArgumentOutOfRangeException()
End If
InputLanguage.CurrentInputLanguage = InputLang
End Sub
Для 64-разрядной мобильности Вы, возможно, должны использовать IntPtr. Можно ли дать этому выстрел?
Public Declare Function ActivateKeyboardLayout Lib "user32" (ByVal nkl As IntPtr, ByVal Flags As uint) As Integer
Вещь, которую все, кажется, пропускают здесь, состоит в том, что Вы работаете в VBA, не в.NET. IntPtr является типом.NET, который представляет целое число, которое является собственным на платформу. На 32-разрядной платформе это - 32 бита на платформе на 64 бита, это - 64 бита.
Учитывая, что HKL является определением типа для дескриптора, который является определением типа для PVOID, который является определением типа для ПУСТОТЫ *, это точно, в чем Вы нуждаетесь при использовании.NET.
VBA ничего не имеет для 64-разрядных чисел, таким образом, необходимо проявить другой подход.
На 64-разрядной машине необходимо будет сделать что-то вроде этого:
Public Type HKL64
High As Long
Low As Long
End Type
Private Declare Function ActivateKeyboardLayout Lib "user32" ( _
Byval HklHigh As Long, Byval HklLow As Long, _
ByVal flags As Integer) As HKL64
Это должно позволить Вам передавать 64 битовых значения стеку к API-функции (через две переменные). Однако, если Вы собираетесь использовать этот код на машинах на 32 бита и на 64 бита, Вы оказываетесь перед необходимостью делать два объявления API и затем определять который звонить.
Кроме того, любой другой код в VBA, который называет API, которые имеют дело с указателями или дескрипторами, должен будет быть изменен соответственно для обработки входа на 64 бита (не 32).
На ноте стороны исходное объявление ActivateKeyboardLayout является неправильным, поскольку это имело тип возврата Целого числа, которое является 16-разрядным значением, в то время как API возвращает тип HKL, который составляет 32 или 64 бита, в зависимости от платформы.