Создание пользовательских inputquery/функции messagebox и т. д. без боли.
<р класса="step_content ">использование способом, который может выглядеть как взломать можно изменить стандартное сообщение коробки и поменять иконку, изменить, кнопка, размер и т. д.р><р класса="step_content ">идея этой игры-создать Пользовательское сообщение, опубликовать в очереди *до* звоню в окне сообщения. В сообщении, вы получить ручку на окно (если это окно messagebox) или формы (если это сайт inputbox/inputquery/messagedlg) и вы измените то, что вы хотите. Позвольте мне привести два примера, один для обычного интерфейса API messagebox и еще с inputquery.р><р класса="step_content "> пример1: нужно изменить Заголовок по умолчанию Да/Нет кнопки очередное сообщение.р><р класса="step_content "> Тип
В TForm1 = класс(TForm)
для кнопки button1: TButton
в процедуре Button1Click(Отправитель: TObject)
частные
в процедуре WMHackBox(вар сообщения: TMessage) сообщение WM_USER 1025
В конце
...
реализация
и ...
в процедуре TForm1.Button1Click(Отправитель: TObject)
и начинается
// наше Пользовательское сообщение
и метод postmessage(ручки, WM_USER 1025, 0, 0)
с // функции messagebox вызвать
Приложение.Функции messagebox('я" совершенно глупо.', 'Мое_приложение', MB_YESNO или MB_ICONINFORMATION)
В конце р><р класса="step_content "> процедура TForm1.WMHackBox(вар сообщения: TMessage)
вар
ч: hwnd элемента
и начинается
// окно сообщения отображается, давайте получить его дескриптор
ч := FindWindow(WC_DIALOG, 'Мое_приложение') <ш /> // если это правильное сообщение, давайте его изменить
если GetParent(ч) = приложения.Затем ручка
и начинается
SetDlgItemText(ч, ID_YES, 'я-согласен') <див класс='embed_block_0'> <див ИД="блок-google_admanager-1" класса="блок блок-google_admanager области-другие области-количество-1 Количество-1 блок-Без названия "> <див класс="блок-топ">див> <див класс="блок-внутренний"> <див класс="содержание"> див> <див класс="блок-дна">див> див> див> див><див класс='embed_block_1'><див>див>див>
SetDlgItemText(ч, ID_NO, 'я-не согласен)
В конце
В конце р><р класса="step_content "> обратите внимание, что если вы используете MessageDlg, это не обычный интерфейс API функции messagebox, но форма создается динамически с помощью Делфи. См. 2-й пример.р><р класса="step_content ">
р><р класса="step_content "> пример 2: Вам нужно изменить изменить свойство InputQuery, например PasswordChar.р><р класса="step_content "> Тип
В TForm1 = класс(TForm)
для кнопки button1: TButton
в процедуре Button1Click(Отправитель: TObject)
частные
в процедуре WMHack(вар сообщения: TMessage) сообщение WM_USER 1024
В конце
...
для реализации в
...
константный
В ACaption = 'Заголовок' р><р класса="step_content "> процедура TForm1.Button1Click(Отправитель: TObject)
и начинается
метод postmessage(ручки, 1024 WM_USER, 0, 0) и
сайт inputbox(ACaption, 'проворный', 'по умолчанию')
В конце р><р класса="step_content "> процедура TForm1.WMHack(сообщение Варе: TMessage)
вар
я: число
и х: число
и начинается
для i := 0 на экране.FormCount-1 делать
если экране.Форм[я].Заголовок = ACaption затем
и начинается
для J := 0 на экране.Форм[я].ControlCount-1 делать
если экране.Форм[я].Управления[Дж] - это поле tedit затем
и начинается
поле tedit(экран.Форм[я].Управления[Дж]).PasswordChar := '#'
В поле tedit(экран.Форм[я].Управления[Дж]).SelectAll
на выходе
В конце
В конце
В конце
р><дел стиль= \ ясно:оба поплавка:нет'>дел><дел стиль= \ ясно:оба поплавка:нет'> & мочекаменная див>
Создание пользовательских inputquery/функции messagebox и т. д. без боли.
Создание пользовательских inputquery/функции messagebox и т. д. без боли. : Несколько тысяч советов, которые сделают вашу жизнь проще.
<р класса="step_content ">использование способом, который может выглядеть как взломать можно изменить стандартное сообщение коробки и поменять иконку, изменить, кнопка, размер и т. д.р><р класса="step_content ">идея этой игры-создать Пользовательское сообщение, опубликовать в очереди *до* звоню в окне сообщения. В сообщении, вы получить ручку на окно (если это окно messagebox) или формы (если это сайт inputbox/inputquery/messagedlg) и вы измените то, что вы хотите. Позвольте мне привести два примера, один для обычного интерфейса API messagebox и еще с inputquery.р><р класса="step_content "> пример1: нужно изменить Заголовок по умолчанию Да/Нет кнопки очередное сообщение.р><р класса="step_content "> Тип
В TForm1 = класс(TForm)
для кнопки button1: TButton
в процедуре Button1Click(Отправитель: TObject)
частные
в процедуре WMHackBox(вар сообщения: TMessage) сообщение WM_USER 1025
В конце
...
реализация
и ...
в процедуре TForm1.Button1Click(Отправитель: TObject)
и начинается
// наше Пользовательское сообщение
и метод postmessage(ручки, WM_USER 1025, 0, 0)
с // функции messagebox вызвать
Приложение.Функции messagebox('я" совершенно глупо.', 'Мое_приложение', MB_YESNO или MB_ICONINFORMATION)
В конце р><р класса="step_content "> процедура TForm1.WMHackBox(вар сообщения: TMessage)
вар
ч: hwnd элемента
и начинается
// окно сообщения отображается, давайте получить его дескриптор
ч := FindWindow(WC_DIALOG, 'Мое_приложение') <ш /> // если это правильное сообщение, давайте его изменить
если GetParent(ч) = приложения.Затем ручка
и начинается
SetDlgItemText(ч, ID_YES, 'я-согласен') <див класс='embed_block_0'> <див ИД="блок-google_admanager-1" класса="блок блок-google_admanager области-другие области-количество-1 Количество-1 блок-Без названия "> <див класс="блок-топ">див> <див класс="блок-внутренний"> <див класс="содержание"> див> <див класс="блок-дна">див> див> див> див><див класс='embed_block_1'><див>див>див>
SetDlgItemText(ч, ID_NO, 'я-не согласен)
В конце
В конце р><р класса="step_content "> обратите внимание, что если вы используете MessageDlg, это не обычный интерфейс API функции messagebox, но форма создается динамически с помощью Делфи. См. 2-й пример.р><р класса="step_content ">
р><р класса="step_content "> пример 2: Вам нужно изменить изменить свойство InputQuery, например PasswordChar.р><р класса="step_content "> Тип
В TForm1 = класс(TForm)
для кнопки button1: TButton
в процедуре Button1Click(Отправитель: TObject)
частные
в процедуре WMHack(вар сообщения: TMessage) сообщение WM_USER 1024
В конце
...
для реализации в
...
константный
В ACaption = 'Заголовок' р><р класса="step_content "> процедура TForm1.Button1Click(Отправитель: TObject)
и начинается
метод postmessage(ручки, 1024 WM_USER, 0, 0) и
сайт inputbox(ACaption, 'проворный', 'по умолчанию')
В конце р><р класса="step_content "> процедура TForm1.WMHack(сообщение Варе: TMessage)
вар
я: число
и х: число
и начинается
для i := 0 на экране.FormCount-1 делать
если экране.Форм[я].Заголовок = ACaption затем
и начинается
для J := 0 на экране.Форм[я].ControlCount-1 делать
если экране.Форм[я].Управления[Дж] - это поле tedit затем
и начинается
поле tedit(экран.Форм[я].Управления[Дж]).PasswordChar := '#'
В поле tedit(экран.Форм[я].Управления[Дж]).SelectAll
на выходе
В конце
В конце
В конце
р><дел стиль= \ ясно:оба поплавка:нет'>дел><дел стиль= \ ясно:оба поплавка:нет'> & мочекаменная див>
Создание пользовательских inputquery/функции messagebox и т. д. без боли.
By russiatips
Создание пользовательских inputquery/функции messagebox и т. д. без боли. : Несколько тысяч советов, которые сделают вашу жизнь проще.