Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как задать действие для кнопки

Ответить
Настройки темы
[решено] Как задать действие для кнопки

Аватара для DImaN!

Ветеран


Сообщения: 862
Благодарности: 184

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: DImaN!
Дата: 04-02-2009
Добрый день. Есть небольшой вопрос по синтаксису AutoIT. Создал форму: несколько лэйблов, несколько текстбоксов и одна кнопка. КАждому элементу (текстбоксы и кнопка) присвоил имена переменных. Вопрос в следующем: как можно сделать так, чтобы при нажатии на кнопку открывалася процесс cmd.exe (нужна ли ryjgrt в этом случае вообще переменная) и как можно передать команде SEND для командной строки текст, вводимый в текстбоксах (указываю "SEND("some text" & $myvar)", а в командной строке прописывается только текст до переменной и ID самой переменной). Можно ли вообще передать командной строке текст из текстбоксов?
Заранее спасибо за помощь

P.S. С вызовом командной строки при нажатии на кнопку уже разобрался. Теперь помогите с обработкой текста в текстбоксах

-------
It's only after we've lost everything that we're free to do anything... Блог


Отправлено: 17:26, 04-02-2009

 

Пользователь


Сообщения: 67
Благодарности: 13

Профиль | Отправить PM | Цитировать


SEND(guictrlread($указатель_на_текстбокс) & $myvar)

-------
Информация для размышления
Такому в вузах не научат


Отправлено: 19:43, 04-02-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

D_Master


Сообщения: n/a

Профиль | Цитировать


Цитата DImaN!:
как можно сделать так, чтобы при нажатии на кнопку открывалася процесс cmd.exe »
Я делаю так:
Код: Выделить весь код
#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
Opt("GUIOnEventMode", 1) ; Подключаем режим OnEvent
$Form1 = GUICreate("Form1", 249, 113)
GUICtrlCreateInput("", 16, 16, 201, 21)
$Checkbox1 = GUICtrlCreateCheckbox("Чекбокс", 16, 48, 105, 17)
$Button1 = GUICtrlCreateButton("Кнопка", 16, 72, 73, 25, 0)
GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
GUICtrlSetOnEvent($Button1, "RunCMD")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
Sleep(100)
WEnd

Func RunCMD()
	Run("cmd.exe")
EndFunc

Func Close()
	Exit
EndFunc
Но, быть может, гуру подскажут другой, более простой способ.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:26, 04-02-2009 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


А зачем Send, можно запустить сразу команду:

Код: Выделить весь код
Run(@ComSpec & ' /C Dir D:\ & Pause')
Для содержимого в GUI:

Код: Выделить весь код
$sRead = GUICtrlRead($iCtrlID)
Run(@ComSpec & ' /C ' & $sRead)

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:31, 04-02-2009 | #4


Аватара для DImaN!

Ветеран


Сообщения: 862
Благодарности: 184

Профиль | Сайт | Отправить PM | Цитировать


Огромное спасибо за помощь!
Еще один наводящий вопрос.. Можно ли как-то запустить от имени администратора коммандную строку под ОС Windows Vista?

Можно ли как-то сделать так, чтобы при нажатии на кнопку открытия командной строки (во время выполнения скрипта) все действия выполнялись только в командной строке и нельзя было перейти в другое прложение . Помогите пжл

-------
It's only after we've lost everything that we're free to do anything... Блог


Последний раз редактировалось DImaN!, 05-02-2009 в 15:06.


Отправлено: 11:19, 05-02-2009 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата DImaN!:
Можно ли как-то запустить от имени администратора коммандную строку под ОС Windows Vista? »
В начало скрипта нужно поместить #RequireAdmin, и/или запускать через RunAs().

Цитата DImaN!:
Можно ли как-то сделать так, чтобы при нажатии на кнопку открытия командной строки (во время выполнения скрипта) все действия выполнялись только в командной строке и нельзя было перейти в другое прложение »
А вот это не совсем понятно, что значит «нельзя было перейти в другое прложение»? блокировать всё вокруг? что блокировать, ввод с клавиатуры, клики мышкой? Подробнее.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 15:48, 05-02-2009 | #6


Аватара для DImaN!

Ветеран


Сообщения: 862
Благодарности: 184

Профиль | Сайт | Отправить PM | Цитировать


Для того, чтобы было нагляднее: мне нужно создать скрипт, который будет автоматом при помощи командной строки отправлять сообщения. ВОт код моего скрипта:
Код: Выделить весь код
#include <GUIConstants.au3>
#include <Date.au3>
#RequireAdmin

GUICreate("TelnetForm", 360, 490)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)

GUICtrlCreateTabItem("")

GUICtrlCreateLabel("Программа для отправки писем при помощи Telnet", 50, 10)
GUICtrlCreateLabel("POP Сервер", 5, 50)
GUICtrlCreateLabel("Отправитель", 5, 80)
GUICtrlCreateLabel("Получатель", 5, 110)
GUICtrlCreateLabel("Тема письма", 5, 140)

$srv  = GUICtrlCreateInput ("", 105, 50, 250)
$from = GUICtrlCreateInput ("", 105, 80, 250)
$to   = GUICtrlCreateInput ("", 105, 110, 250)
$subj   = GUICtrlCreateInput ("", 105, 140, 250)

GUICtrlCreateLabel("Тело письма", 5, 190)
$body = GUICtrlCreateEdit("", 20, 230, 320, 210, $ES_AUTOVSCROLL+$WS_VSCROLL)

$button = GUICtrlCreateButton("Отправка сообщения", 105, 450)

GUISetState(@SW_SHOW)

While 1 
    $nMsg = GUIGetMsg() 
    Switch $nMsg 
        Case $GUI_EVENT_CLOSE 
            Exit 
        Case $button 
            ButtonClick() 
    EndSwitch 
WEnd 

	Func ButtonClick()
		Run("cmd.exe")
		ProcessWait("cmd.exe")
		SEND("telnet")
		SEND("{ENTER}")
		Sleep(200)
			$sRead = GUICtrlRead($srv)
			SEND("o " & $sRead & " 25")
		Sleep(200)
		Send("{ENTER}") 

		Sleep(3000)
		SEND("HELO W" & "{ENTER}")
			$sRead2 = GUICtrlRead($from)
 			SEND("MAIL FROM: " & "<" & $sRead2 & ">" & "{ENTER}")
		Sleep(300)
			$sRead3 = GUICtrlRead($to)
 			SEND("RCPT TO: " & "<" & $sRead3 & ">" & "{ENTER}")
		Sleep(300)
			Send("DATA" & "{ENTER}")
		Sleep(300)
			SEND("From: " & "<" & $sRead2 & ">" & "{ENTER}")
			SEND("To: " & "<" & $sRead3 & ">" & "{ENTER}")
			
			$sRead5 = GUICtrlRead($subj)
			SEND("Subject: " & $sRead5 & "{ENTER}")
			
			$sShortDayName = _DateDayOfWeek( @WDAY, 1 )
			$sNewDate = _DateAdd( 'n',0, _NowCalc())

			SEND("Date: "  & $sShortDayName & ", " & $sNewDate & " " & "{+}0200" & "{ENTER}")
		SEND("MIME-Version: 1.0" & "{ENTER}")
		SEND("Content-Language: ru")
		SEND("{ENTER}" & "{ENTER}")
				
			$sRead4 = GUICtrlRead($body)
	 		SEND($sRead4 & "{ENTER}")
		SEND("{ENTER}")
		SEND(".")
		SEND("{ENTER}")
		Sleep(200)
		SEND("quit" & "{ENTER}")
		Sleep(700)
		SEND("{ENTER}" & "{ENTER}")
		Sleep(1000)
		SEND("quit" & "{ENTER}")
		Sleep(500)
		SEND("exit" & "{ENTER}")

	endFunc
В чем проблема: когда нажимаю на кнопку "отправить" поднимается командная строка. Но при вводе команды "telnet" открывается не стандартный телнет, а новая копия данной программы. В чем может быть причина? возможно я просто неправильно изложил пролему...

-------
It's only after we've lost everything that we're free to do anything... Блог


Последний раз редактировалось DImaN!, 05-02-2009 в 16:08.


Отправлено: 15:55, 05-02-2009 | #7


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата DImaN!:
при вводе команды "telnet" открывается не стандартный телнет, а новая копия данной программы »
Открывает в cmd.exe, если нужно отдельно то запускать нужно сразу telnet.exe.

Код: Выделить весь код
Run("telnet.exe")
    ProcessWait("telnet.exe")
P.S
И вообще, все эти Send... это очень не надёжно, я бы делал всё через StdInWrite/Read и в скрытом положении, отображая данные в GUI (ведь как я понимаю, на то и был создан GUI для telnet ).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 16:13, 05-02-2009 | #8


Аватара для DImaN!

Ветеран


Сообщения: 862
Благодарности: 184

Профиль | Сайт | Отправить PM | Цитировать


Спасибо, возможно переделаю используя StdInWrite/Read, но на данном этапе, все равно, после того, как поменял cmd.exe на telnet.exe открывается не окно телнета, а вторая копия программы. В чем может быть причина?

-------
It's only after we've lost everything that we're free to do anything... Блог


Последний раз редактировалось DImaN!, 05-02-2009 в 16:28.


Отправлено: 16:17, 05-02-2009 | #9


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата DImaN!:
открывается не окно телнеа, а вторая копия программы »
Какой программы? у меня ничего не октрывается кроме telnet'а.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 16:29, 05-02-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как задать действие для кнопки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как задать программы (ассоциации файлов) по умолчанию? Vadikan Microsoft Windows 7 173 04-03-2023 01:34
Debian/Ubuntu - Неправильно работает Numpad: кнопки '+50,' работают как кнопки мыши Viktorr Общий по Linux 0 29-04-2009 20:40
Интерфейс - [решено] Как задать разное разрешение экрана для разных юзеров в ХР? sfes Microsoft Windows 2000/XP 15 06-09-2008 22:57
назначить действие для файлов в firefox graverman Программное обеспечение Linux и FreeBSD 1 26-11-2007 17:00
[решено] Как назначить 2-м кнопкам на форме разное действие vagner_HATE Вебмастеру 8 15-10-2007 17:03




 
Переход