powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / WinAPI SetWindowText
6 сообщений из 6, страница 1 из 1
WinAPI SetWindowText
    #36764352
evansl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привествую, не подскажите почему у меня не отрабатывает функция SetWindowText, после того как нашел Handle, пытаюсь поменять текст, но он выводит не понятные символы вместо "TEst", есть какая-нибудь особенность? Что я делаю не так, подскажите?


Dim HandleWin As Long
Dim TextCaption As String
Dim j As Long ' return value


TextCaption = "Выбрать значения переменных"
HandleWin = FindWindow(vbNullString, TextCaption)
If HandleWin <> 0 Then
j = SetWindowText(HandleWin, "Test")
End If

Counter = Counter + 1
...
Рейтинг: 0 / 0
WinAPI SetWindowText
    #36764684
evansl,

описания функций через Declare показывайте.
...
Рейтинг: 0 / 0
WinAPI SetWindowText
    #36765500
evansl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
13-й кварталevansl,

описания функций через Declare показывайте.

13-й квартал, вот код, подскажите пожалуйста что делаю не так ... в названии окно так и выводятся не читаемые символы, а я хочу чтобы был текст "Test".


'Функции работы с таймером
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, _
ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

'Поиск окна
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

'''''''''''''''
Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent _
As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, _
ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Declare Function SendMessageS Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Declare Function FindWindowX Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, ByVal lpsz1 As Long, ByVal lpsz2 As Long) As Long

Declare Function SetWindowText Lib "user32" Alias "SetWindowTextW" _
(ByVal hwnd As Long, lpString As Any) As Long


Public Const WM_GETTEXT = &HD
'''''''''''''''''
Public Counter As Long
Public IdEv As Long

Public Sub HowManyProc(ByVal HandleW As Long, ByVal msg As Long, _
ByVal idEvent As Long, ByVal TimeSys As Long)
Dim HandleWin As Long
Dim TextCaption As String
Dim retval As Long ' return value

TextCaption = "Выбрать значения перменных"
HandleWin = FindWindow(vbNullString, TextCaption)
If HandleWin <> 0 Then
retval = SetWindowText(HandleWin, "Test")
Debug.Print "Найден Handle окна: " & HandleWin
End If

Counter = Counter + 1
Debug.Print "Hi", Counter

End Sub

Public Sub Start()
'Создан таймер, вызывая Win32 Api функцию SetTimer
Counter = 0
IdEv = SetTimer(0&, 0&, 1000, AddressOf HowManyProc)
If IdEv = 0 Then
MsgBox ("Не удалось создать таймер!")
Else
Debug.Print "Создан таймер: Идентификатор = ", IdEv
End If
End Sub

Public Sub Finish()
'Удаляет таймер
If IdEv > 0 Then
Call KillTimer(0&, IdEv)
Debug.Print "Удален таймер: Идентификатор = ", IdEv
IdEv = 0
End If
End Sub
...
Рейтинг: 0 / 0
WinAPI SetWindowText
    #36765918
evansl,

при таком описании (не совсем логичном, так как 1) все остальные функции описаны ANSI-шные, с суффиксом A, 2) второй параметр строковый, не понятно, зачем он описан As Any) вызов должен выглядеть как retval = SetWindowText(HandleWin, ByVal StrPtr("Test")).

Если б функция была (классически) описана как Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long, вызов бы работал без изменений.
...
Рейтинг: 0 / 0
WinAPI SetWindowText
    #36766325
evansl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос снят.
...
Рейтинг: 0 / 0
WinAPI SetWindowText
    #36766330
evansl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
13-й кварталevansl,

при таком описании (не совсем логичном, так как 1) все остальные функции описаны ANSI-шные, с суффиксом A, 2) второй параметр строковый, не понятно, зачем он описан As Any) вызов должен выглядеть как retval = SetWindowText(HandleWin, ByVal StrPtr("Test")).

Если б функция была (классически) описана как Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long, вызов бы работал без изменений.

Спасибо.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / WinAPI SetWindowText
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]