Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |
А вот такой вопрос: 04.04.02 18:53 Число просмотров: 1062
Автор: PS <PS> Статус: Elderman
|
Имеем аналогичную функциональность на басике. Код программы:
Private Declare Function GetWindowTextA Lib "user32" _
(ByVal hwnd As Long, ByRef _
hWndInsertAfter As Byte, ByVal x As Long) As Long
Private Sub Command1_Click()
Dim s(100) As Byte
GetWindowTextA CLng(Text2.Text), s(0), 10
MsgBox Chr(s(0)) + Chr(s(1))
End Sub
Private Sub Command2_Click()
Text2 = Text1.hwnd
End Sub
Private Sub Form_Load()
Dim s As String
Dim s2 As String
End Sub
Т.е. форма с двумя текст боксами и двумя кнопками. По второй кнопке пишим во второй текст бокс hwnd первого текстбокса.
По первой кнопке лезем по hwnd который во втором текст боксе и выводим результат.
Что мы видим: Запускаем два таких приложения (по умолчанию в первом поле стоит Text1). Жмем у каждого вторую кнопку (проставляем hwnd). Меняем текст в первом поле. Жмем первую кнопку - получаем первые символы из первого поля. Отлично. Теперь копируем hwnd из одного приложения, в другое. Опять жмем первую кнопку... Упс... получаем "Te", то есть не те сиволы, что сейчас, а те которыми текстбокс инициализировался при загрузке.
И как это понимать ?
|
|
<programming>
|
[Pascal] Есть проблема с TMaskEdit 04.04.02 14:51
Автор: DarkF0x Статус: Незарегистрированный пользователь
|
Как можно получить текст из компоненты TMaskEdit?
То-есть, открыто приложение (любое) в котором используется TMaskEdit
Мне надо программно выдрать текст из этого компонента...
|
 |
А вот такой вопрос: 04.04.02 18:53
Автор: PS <PS> Статус: Elderman
|
Имеем аналогичную функциональность на басике. Код программы:
Private Declare Function GetWindowTextA Lib "user32" _
(ByVal hwnd As Long, ByRef _
hWndInsertAfter As Byte, ByVal x As Long) As Long
Private Sub Command1_Click()
Dim s(100) As Byte
GetWindowTextA CLng(Text2.Text), s(0), 10
MsgBox Chr(s(0)) + Chr(s(1))
End Sub
Private Sub Command2_Click()
Text2 = Text1.hwnd
End Sub
Private Sub Form_Load()
Dim s As String
Dim s2 As String
End Sub
Т.е. форма с двумя текст боксами и двумя кнопками. По второй кнопке пишим во второй текст бокс hwnd первого текстбокса.
По первой кнопке лезем по hwnd который во втором текст боксе и выводим результат.
Что мы видим: Запускаем два таких приложения (по умолчанию в первом поле стоит Text1). Жмем у каждого вторую кнопку (проставляем hwnd). Меняем текст в первом поле. Жмем первую кнопку - получаем первые символы из первого поля. Отлично. Теперь копируем hwnd из одного приложения, в другое. Опять жмем первую кнопку... Упс... получаем "Te", то есть не те сиволы, что сейчас, а те которыми текстбокс инициализировался при загрузке.
И как это понимать ?
|
 |
[Pascal] Есть проблема с TMaskEdit 04.04.02 15:48
Автор: HandleX <Александр М.> Статус: The Elderman
|
> Как можно получить текст из компоненты TMaskEdit? > > То-есть, открыто приложение (любое) в котором используется > TMaskEdit > Мне надо программно выдрать текст из этого компонента...
TMaskEdit - это объектный Wrapper (оболочка) в Delphi для элемента управления Windows EditControl. Т.е. те звёздочки, которые видны в этом элементе управления вместо пароля ;-) на самом деле отображает EditControl. Итак, вызываем функцию API Windows GetWindowCaption и получаем текст, который в этом элементе управления. Только нужно знать дескритор этого окна. Можно вытащить по координатам. Где-то в инете валялась прога, которая выводила в список текст из всех видимых в данный момент окон со звёздочками. Удачи!
|
 |  |
Сорри Опять Баг... 04.04.02 16:36
Автор: DarkF0x Статус: Незарегистрированный пользователь Отредактировано 04.04.02 16:36 Количество правок: 1
|
Единственная проблема, как ее вызвать... =(
У меня Delphi ругается undeclared identifier....
=( Она случайно не вызывается из внешней библиотеки?
|
 |  |  |
Сорри Опять Баг... 04.04.02 20:41
Автор: Heromantor Статус: Незарегистрированный пользователь
|
1. GetWindowCaption что это?
2. GetWindowText работает только для текущего процесса
WM_GETTEXT мессага подойдет
к примеру так:
char str[128];
::SendMessage(hwnd,WM_GETTEXT,(WPARAM)sizeof(str),(LPARAM)str);
|
 |  |  |  |
И про ***** 04.04.02 20:45
Автор: Heromantor Статус: Незарегистрированный пользователь
|
А звезды можно убрать послав окну сообщение EM_SETPASSWORDCHAR
An application sends an EM_SETPASSWORDCHAR message to set or remove the password character for a single-line edit control when the user types text. When a password character is set, that character is displayed in place of each character the user types.
EM_SETPASSWORDCHAR
wParam = (WPARAM) (UINT) ch; // character to display
lParam = 0; // not used; must be zero
Parameters
ch
Value of wParam. Specifies the character to be displayed in place of the character typed by the user. If this parameter is zero, the characters typed by the user are displayed.
Return Values
This message does not return a value.
Remarks
When the EM_SETPASSWORDCHAR message is received by an edit control, the edit control redraws all visible characters by using the character specified by the ch parameter.
If the edit control is created with the ES_PASSWORD style, the default password character is set to an asterisk (*). This style is removed if an EM_SETPASSWORDCHAR message is sent with the ch parameter set to zero.
|
 |  |
Big Thanx... 04.04.02 16:25
Автор: DarkF0x Статус: Незарегистрированный пользователь
|
|
|
|
|