Что нового

Создать меню с кнопками для подстановки имеющихся логина/пароля в IE

Михаил

Новичок
Сообщения
20
Репутация
0
Здравствуйте, необходима ваша помощь 
Имеется файл текстовый файл:
Структура: IP{tab}Логин{tab}Пароль{tab}ФИО

10.88.164.178 pms pkms0812 Рассафонова Марина Игоревна
10.88.164.178 pms11 pkms0812 Иванов Афанасий Федорович
10.88.164.162 vip vip0077 Мамедов Станислав Степанович
Необходимо сделать так, что если IP в текстовом файле совпадает с IP ПК , создавалось меню с кнопками , где названия кнопок будут совпадать с именами , а также при нажатии на кнопку логины и пароли преобразовывались в переменные для подставления в окно авторизации Internet Explorer.

Код:
While 1
    $Line = FileReadLine($File)
    If @error Then
        ExitLoop
    EndIf
    $Line = StringStripWS($Line, 3)
     If StringLeft($Line, 1)  Then
       $pos = stringinstr($line,'	')
	   $data[1]= stringleft($line,$pos-1)
	   $line= stringtrimleft($line,$pos)
	   $pos = stringinstr($line,'	')
	   $data[2]=stringleft($line,$pos-1)
	   $line= stringtrimleft($line,$pos)
	   $pos = stringinstr($line,'	')
	   $data[3]=stringleft($line,$pos-1)
	   $data[4]= stringtrimleft($line,$pos)
       
   EndIf

с помощью этого я получил 4 переменные перебором, но что делать дальше не знаю
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Re: Наложить на кнопки действия.

Михаил [?]
что делать дальше не знаю
для начала http://autoit-script.ru/index.php?topic=124.0
потом
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Как правильно называть темы

"Наложить на кнопки действия." - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, Модератор раздела.








ну и под конец
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
(подробнее), а обычный код соответственно в тег [code]
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, Модератор раздела.




жду исправлений выше обозначенных замечаний.
PS: а в качестве рекомендации, использование таких понятий, как
определенную программу
, ни имя, ни источник, ни природа которой не известны, получению помощи не поспособствуют, а скорее всего наоборот, отвадят.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
Михаил, научитись правильно выражать свои мысли.

Михаил сказал(а):
...если IP в текстовом файле совпадает с IP ПК...
Какого именно ПК?

Михаил сказал(а):
...создавалось меню с кнопками...
Первый раз слышу о существовании такого меню. Что вы имели в виду?

Михаил сказал(а):
...где названия кнопок будут совпадать с именами...
Имен, связанных с определенным IP, может быть несколько?

Михаил сказал(а):
...логины и пароли преобразовывались в переменные для подставления в окно авторизации Internet...
Логин и пароль, это текстовые данные (строки), переменные - именованные области памяти и т.д. Если понимать вашу фразу буквально, то нужно сделать следующее: для логина и пароля "Vasya" и "Apple" создаем переменные с именами $Vasya и $Apple соответствено. Я переформулирую фразу: "...переменные $Login и $Password принимали значения выбранного логина и пароля для последующего подставления в диалоговое окно авторизации при подключении к Internet... ". Есть разница?

Михаил сказал(а):
...с помощью этого я получил 4 переменные перебором...
Код нерабочий. Если вы публикуете часть кода, то он должен быть логически завершенным.

P.S

Массив $Data можно получить намного проще и быстрее:

Код:
$Data = StringSplit(StringStripWS($Line, 7), @TAB, 2)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Михаил
Попробуйте так:
Код:
;#include <Array.au3>
#include <Constants.au3>
#include <GUIConstantsEx.au3>

#cs
    $sIP = _GetMyIP()
    If Not $sIP Then
    MsgBox(16, 'Error', 'Произошла ошибка получения IP-адреса')
    Exit
    EndIf
    MsgBox(64, @IPAddress1, $sIP)
#ce
$sIP = @IPAddress1
$iYes = 0
$sFile = @ScriptDir & '\test.txt'

$hFile = FileOpen($sFile, 0)
$sText = FileRead($hFile)
FileClose($hFile)

$aTempText = StringSplit(StringStripCR($sText), @LF)
Dim $aInfo[$iYes + 1][5]
For $i = 1 To $aTempText[0]
    If StringInStr($aTempText[$i], $sIP) Then
        $iYes += 1
        ReDim $aInfo[$iYes + 1][5]
        $aTemp = StringSplit(StringStripWS($aTempText[$i], 7), @TAB)
        If $aTemp[0] == 4 Then
            For $j = 1 To $aTemp[0]
                $aInfo[$iYes][$j - 1] = $aTemp[$j]
            Next
        EndIf
    EndIf
Next
If Not $iYes Then
    MsgBox(16, 'Info', 'IP-адрес этого компьютера не совпадает с заданными')
    Exit
EndIf
$aTempText = 0
$aInfo[0][0] = $iYes
;_ArrayDisplay($aInfo, $iYes)

$hGui = GUICreate('Test', 270, $aInfo[0][0] * 45 + 10)
For $i = 1 To $aInfo[0][0]
    $aInfo[$i][4] = GUICtrlCreateButton($aInfo[$i][3], 10, 10 + ($i - 1) * 45, 250, 35)
Next
GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
    For $i = 1 To $aInfo[0][0]
        If $nMsg = $aInfo[$i][4] Then
            $sLogin = $aInfo[$i][1]
            $sPass = $aInfo[$i][2]
            MsgBox(64, 'Info', 'Для ' & $aInfo[$i][3] & @CRLF & 'Логин: ' & $sLogin & @CRLF & _
                    'Пароль: ' & $sPass)
            ;теперь можно открывать IE и использовать в нем логин и пароль.
            ExitLoop
        EndIf
    Next
WEnd
#cs
    Func _GetMyIP()
    Local $s_Read, $i_PID, $s_IP = ''
    $i_PID = Run(@ComSpec & ' /C ipconfig', '', @SW_HIDE, $STDOUT_CHILD)
    If Not $i_PID Then Return $s_IP
    While 1
    $s_Read &= StdoutRead($i_PID)
    If @error Then ExitLoop
    Sleep(10)
    WEnd
    If Not $s_Read Then Return $s_IP
    $s_IP = StringRegExpReplace($s_Read, '(?s).*?IP.*:\s?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})?.*', '\1')
    Return $s_IP
    EndFunc   ;==>_GetMyIP
#ce
На всякий случай файл test.txt прикрепил.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
madmasles

Т.к. это "Стол заказов", я временно убрал ваш код до тех пор, пока автор этой темы не оформит свое первое сообщение в соответствии с правилами этого раздела и замечаниями модераторов. Как только это случится, код снова будет доступен.

AZJIO

Тоже самое.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
AZJIO
Работает (у меня) и с "=", и с "==", но "==", вроде, правильнее, да и привычнее (мне). :smile:
 
Автор
М

Михаил

Новичок
Сообщения
20
Репутация
0
Огромное спасибо за ответы ! Замечания мотаю на ус :smile: Сейчас попробую ваши предложения
 
Верх