|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Передалать стандартный "InputBox" в анологичное "GUI-окно" |
|
|
[решено] Передалать стандартный "InputBox" в анологичное "GUI-окно"
|
Старожил Сообщения: 379 |
Профиль | Отправить PM | Цитировать В стандартное окно "InputBox" нельзя вставить картинку...
Помогите пожалуйтста переделать обычный "InputBox" в анологичное "GUI-окно"... На примере вот этого кода... Как вставить картинку я разобрался а как вставить полоску ввода информании понять не могу |
|
Отправлено: 13:33, 04-04-2009 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать См. Custom_InputBox(), вставить там картинку, думаю будет несложно?
|
------- Отправлено: 14:07, 04-04-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 379
|
Профиль | Отправить PM | Цитировать Creat0R, там столько МНОГО всего!!!! И я по английски не понимаю Можешь дать конкретный код?
В окошке примерно вот что: 1. Немного текста (любого ) 2. Полоска ввода текста ( типа как в InputBox) 3. Кнопка "Oк" 4. После нажатия "Ок" переменной $text присваивается текс который ввели в окошечке Простите, но я нубик в AutoIt Я скачал пример из ссылки которую ты дал, но он ошибку выкидывает на 5 строке |
------- Отправлено: 14:18, 04-04-2009 | #3 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать ручной пример:
#region: - Option Opt('GUIOnEventMode', 1) Opt('MustDeclareVars', 1) Opt('TrayIconDebug', 1) Opt('TrayIconHide', 0) #endregion #region: - Include #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #endregion #region: - Win Msg Global Global $hMsgWin ;~ Title, Width, Height, X, Y, Style, ExStyle Global $sMsgWinTitle = '1234' Global $iMsgWinWidth = 200 Global $iMsgWinHeight = 93 Global $iMsgWinX = -1 Global $iMsgWinY = -1 Global $iMsgWinStyle = $WS_CAPTION+$WS_SYSMENU Global $iMsgWinExStyle = -1 ;~ Settings Global $fMsgWinOnTop = 0 ;~ GUI Ctrl Global $hsWinMsgText #endregion #region: - Win Msg Function Func _WinMsg_Create() $hMsgWin = GUICreate($sMsgWinTitle, $iMsgWinWidth, $iMsgWinHeight, $iMsgWinX, $iMsgWinY, $iMsgWinStyle, $iMsgWinExStyle) GUISetIcon('shell32.dll', -10) GUISetOnEvent($GUI_EVENT_CLOSE, '_Pro_Exit') GUICtrlCreateGroup(' Введите текст: ', 5, 5, $iMsgWinWidth-10, $iMsgWinHeight-10) $hsWinMsgText = GUICtrlCreateInput('', 15, 25, $iMsgWinWidth-30, 20) GUICtrlCreateButton('OK', 14, 53, ($iMsgWinWidth-28-2)/2, 24) GUICtrlSetOnEvent(-1, '_WinMsg_OK') GUICtrlCreateButton('Отмена', 14+($iMsgWinWidth-28-2)/2+2, 53, ($iMsgWinWidth-28-2)/2, 24) GUICtrlSetOnEvent(-1, '_Pro_Exit') If $fMsgWinOnTop Then WinSetOnTop($hMsgWin, '', 1) GUISetState(@SW_SHOW, $hMsgWin) EndFunc Func _WinMsg_Close() ;~ GUIDelete($hMsgWin) _Pro_Exit() EndFunc Func _WinMsg_OK() Local $sText = GUICtrlRead($hsWinMsgText) If StringStripWS($sText, 8) == '' Then MsgBox(48, 'Ошибка!', 'Пожалуйста, введите текст') GUICtrlSetData($hsWinMsgText, '') GUICtrlSetState($hsWinMsgText, $GUI_FOCUS) Else ;~ MsgBox(64, 'OK', 'Отлично') _PutTextToNotepad($sText) _WinMsg_Close() EndIf EndFunc #endregion #region: - After creating all GUI GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST') _WinMsg_Create() #endregion #region: - Sleep, Exit While 1 Sleep(10) WEnd Func _Pro_Exit() Exit EndFunc #endregion Func _PutTextToNotepad($sText) Local $iPid, $iHwd $iPid = Run('notepad.exe') While 1 $iHwd = _ProcessGetWindow($iPid) If IsHWnd($iHwd) Then ExitLoop WEnd WinWait($iHwd) ControlSetText($iHwd, '', '[CLASS:Edit; INSTANCE:1]', $sText) EndFunc Func _ProcessGetWindow($iPID, $iRet=1) Local $aWinList = WinList() Local $aRet[2] If IsString($iPID) Then $iPID = ProcessExists($iPID) For $i = 1 To UBound($aWinList)-1 If WinGetProcess($aWinList[$i][1]) = $iPID Then $aRet[0] = $aWinList[$i][0] ;Title $aRet[1] = $aWinList[$i][1] ;WinHandle If $iRet = 0 Then Return $aRet[0] If $iRet = 1 Then Return $aRet[1] Return $aRet EndIf Next Return SetError(1, 0, $aRet) EndFunc Func WM_NCHITTEST($hWnd, $Msg, $wParam, $lParam) Local $iProc = DllCall('user32.dll', 'int', 'DefWindowProc', 'hwnd', $hWnd, 'int', $Msg, 'wparam', $wParam, 'lparam', $lParam) If $iProc[0] = $HTCLIENT Then Return $HTCAPTION Return $GUI_RUNDEFMSG EndFunc |
------- Отправлено: 14:42, 04-04-2009 | #4 |
Старожил Сообщения: 379
|
Профиль | Отправить PM | Цитировать Это всё конечно хорошо... но вот такая команда у меня не работает: Send ($text)
|
|
------- Последний раз редактировалось sashadeg, 04-04-2009 в 15:51. Отправлено: 15:37, 04-04-2009 | #5 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать Цитата:
- текст вставляется почти мнгновенно ) $iHwd - хэндл (указатель) окно / либо текст заголовка окна Далее указывается текст, который присутствует в окне. Если $iHwd это хэндл окна, то с текстом можно не заморачиваться [CLASS:Edit; INSTANCE:1] - id элемента, которому высылается текст. Можно узнать с помощью "..<папка установки>\AutoIt3\Au3Info.exe". Строчки Advanced (Class) или ClassnameNN $sText - высылаемый текст элементу |
|
------- Отправлено: 20:10, 04-04-2009 | #6 |
Старожил Сообщения: 379
|
Профиль | Отправить PM | Цитировать А что Send($text) вообще ни как??? Просто мне это надо для Полноэкранного приложения... А там ID то не узнать... Да я и с этой командой привык работать...
|
------- Отправлено: 20:58, 04-04-2009 | #7 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать Цитата:
Цитата sashadeg:
;~ Если запись такая: $hsWinMsgText = GUICtrlCreateInput('', 15, 25, $iMsgWinWidth-30, 20) ;~ То высылать нужно так: Send(GUICtrlRead($hsWinMsgText)) и флаги в Send: Цитата:
|
|||
------- Отправлено: 21:14, 04-04-2009 | #8 |
Старожил Сообщения: 379
|
Профиль | Отправить PM | Цитировать Спасибо тебе за всё... но ты пишешь такие коды 0_о я же писал что я нубик Можешь конкретно написать код чтобы был точный прототип стандартного INPUTBOX'a ??? Просто у меня прога полностью готова, я хотел бы вставить пару картинок... А вы мне тут ТАКИЕ коды пишите
|
------- Отправлено: 21:40, 04-04-2009 | #9 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать #region: - Option Opt('MustDeclareVars', 1) Opt('TrayIconDebug', 1) Opt('TrayIconHide', 0) #endregion #region: - Include #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #endregion Local $sInputText $sInputText = _MsgBox('Название окна #1 ', ' Введите текст: ', 200, 93, -1, -1, -1) Switch @error Case -1 MsgBox(48, 'Выход #1 ', 'Выход без ввода текст' & @CRLF & 'Код выхода: ' & @error) Case 0 MsgBox(64, 'Введенный текст #1 ', $sInputText) EndSwitch ;~ Или так: окно поверх всех $sInputText = _MsgBox('Название окна #2 ', ' Введите текст: ', 200, 93, -1, -1, -1, -1, 1) If @error == -1 Then MsgBox(48, 'Выход #2 ', 'Выход без ввода текст' & @CRLF & 'Код выхода: ' & @error) Else MsgBox(64, 'Введенный текст #2 ', $sInputText) EndIf ;~ Или так: окно поверх всех + другая иконка окна $sInputText = _MsgBox('Название окна #3 ', ' Введите текст: ', 200, 93, -1, -1, -1, -1, 1, -1, -45) If @error == 0 Then MsgBox(64, 'Введенный текст #3 ', $sInputText) #region: - _MsgBox ; #FUNCTION# ==================================================================================================================== ; Name...........: _MsgBox ; Description ...: Окно типа MsgBox со строкой ввода текса и кнопками Ok, Отмена ; Syntax.........: _MsgBox($sTitle, $sText, $iWidth, $iHeight, $iX, $iY [, $iStyle=13107200] [, $iExStyle=-1] [, $fOnTop=0] [, $sIconPath='shell32.dll'] [, $iIconId=-1]) ; Parameters ....: $sTitle - Название кона ;~ $sText - Текст сообщения ;~ $iWidth - Ширна окна ;~ $iHeight - Высота окна ;~ $iX - Позиция окна по Х ;~ $iY - Позиция окна по У ;~ $iStyle - Стиль окна ;~ $iExStyle - Расширенный стиль окна ;~ $fOnTop - Установка окна поверех всех окон ;~ $sIconPath - Путь к файлу/dll иконки окна ;~ $iIconId - Id иконки ; Return values .: Success - Введенный текст. @error = 0 ; Failure - -1 закрытие окна без ввода текста. @error = -1 ; Author ........: `p r o x y (icq 729406) ; =============================================================================================================================== Func _MsgBox($sTitle, $sText, $iWidth, $iHeight, $iX, $iY, $iStyle=13107200, $iExStyle=-1, $fOnTop=0, $sIconPath='shell32.dll', $iIconId=-222) Local $fGUIOnEventMode = Opt('GUIOnEventMode') Opt('GUIOnEventMode', 0) If $iStyle == -1 Then $iStyle = 13107200 Local $hMsgBox = GUICreate($sTitle, $iWidth, $iHeight, $iX, $iY, $iStyle, $iExStyle) If $sIconPath = -1 Then $sIconPath = 'shell32.dll' GUISetIcon($sIconPath, $iIconId) GUICtrlCreateGroup($sText, 5, 5, $iWidth-10, $iHeight-10) Local $hsMsgBoxText = GUICtrlCreateInput('', 15, 25, $iWidth-30, 20) Local $hMsgBoxOK = GUICtrlCreateButton('OK', 14, 53, ($iWidth-28-2)/2, 24) Local $hMsgBoxCancel = GUICtrlCreateButton('Отмена', 14+($iWidth-28-2)/2+2, 53, ($iWidth-28-2)/2, 24) If $fOnTop Then WinSetOnTop($hMsgBox, '', 1) GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST') GUISetState(@SW_SHOW, $hMsgBox) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE GUIDelete($hMsgBox) Opt('GUIOnEventMode', $fGUIOnEventMode) GUIRegisterMsg($WM_NCHITTEST, '') Return SetError(-1) Case $hMsgBoxCancel GUIDelete($hMsgBox) Opt('GUIOnEventMode', $fGUIOnEventMode) GUIRegisterMsg($WM_NCHITTEST, '') Return SetError(-1) Case $hMsgBoxOK Local $sMsgBoxText = GUICtrlRead($hsMsgBoxText) If StringStripWS($sMsgBoxText, 8) == '' Then MsgBox(48, 'Ошибка!', 'Пожалуйста, введите текст') GUICtrlSetData($hsMsgBoxText, '') GUICtrlSetState($hsMsgBoxText, $GUI_FOCUS) Else GUIDelete($hMsgBox) SetError(0) Opt('GUIOnEventMode', $fGUIOnEventMode) GUIRegisterMsg($WM_NCHITTEST, '') Return $sMsgBoxText EndIf EndSwitch WEnd EndFunc Func WM_NCHITTEST($hWnd, $Msg, $wParam, $lParam) Local $iProc = DllCall('user32.dll', 'int', 'DefWindowProc', 'hwnd', $hWnd, 'int', $Msg, 'wparam', $wParam, 'lparam', $lParam) If $iProc[0] = $HTCLIENT Then Return $HTCAPTION Return $GUI_RUNDEFMSG EndFunc;==>_MsgBox #endregion |
------- Последний раз редактировалось proxy, 04-04-2009 в 23:25. Отправлено: 22:50, 04-04-2009 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? | verdix | Microsoft Windows 2000/XP | 3 | 03-10-2009 23:46 | |
[решено] Нужна помощь с StringRegExpReplace ( "test", "PATTERN-ом", "\1"). | ikif | AutoIt | 6 | 28-07-2009 20:06 | |
Debian/Ubuntu - [решено] Пропали кнопки "свернуть","закрыть","во весь екран" в папках | Alex.sys | Общий по Linux | 5 | 02-04-2009 11:13 | |
Не получается найти все выпуски "Хакер"+"спец"+"железо" | verdix | Хочу все знать | 5 | 29-11-2008 15:19 | |
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") | submaster | Microsoft Windows NT/2000/2003 | 5 | 13-09-2006 12:29 |
|