1

Тема: AHK: Дописывает текст если есть изменения

Здравствуйте.
Нашел такие функции, которые узнает серийный номер жесткого диска и volume дисков:

objWMIService := ComObjGet("winmgmts:\\.\root\cimv2")
colItems := objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk")._NewEnum
while colItems[objItem]
{
        MsgBox, % "Drives:`t`t" . objItem.Caption . "`n"
            . "Volume Serial No:`t" . objItem.VolumeSerialNumber
}

и

objWMIService := ComObjGet("winmgmts:\\.\root\cimv2")
colItems := objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMedia")._NewEnum
while colItems[objItem]
{
        MsgBox, % "Hardware Serial No:`t" . objItem.SerialNumber
}

Узнать свой внешний IP адрес:

UrlDownloadToFile, http://ip.ahk4.me/, %A_Temp%\ip.ahk4.me

FileRead, ExtIP, %A_Temp%\ip.ahk4.me

MsgBox % ExtIP

Суть скрипта: создает txt или ini файл. Туда записывает серийник HDD и Volume id так же записывает IP. Далее при следующем запуске скрипта скрипт проверяет txt или ini файл и если есть изменения например в IP адресе то ДОПИСЫВАЕТ новый ип и так каждый раз при запуске скрипта.
Как записывать я знаю, а вот как сделать что бы каждый раз дописывал новое если есть изменения я не понимаю.

2

Re: AHK: Дописывает текст если есть изменения

Смотрите пример команды Loop (чтение файла) с использованием IfInString.

3 (изменено: Alectric, 2014-06-26 11:20:50)

Re: AHK: Дописывает текст если есть изменения

Может "FileAppend" подойдет. Или "iniWrite".

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

4 (изменено: Dworkin, 2014-07-01 14:16:39)

Re: AHK: Дописывает текст если есть изменения

Хм, почитав справку и поискав по форуму я не нашел того что мне нужно(

Вот скрипт:

objWMIService := ComObjGet("winmgmts:\\.\root\cimv2")
colItems := objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk")._NewEnum
colItems[objItem]
VolumeID := objItem.VolumeSerialNumber


objWMIService := ComObjGet("winmgmts:\\.\root\cimv2")
colItems := objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMedia")._NewEnum
colItems[objItem]
HardwareID := objItem.SerialNumber

F2::
InputBox, Nicknameinput, Nick name, Please enter a nick name
InputBox, ExtIP, IP address, Please enter a IP address

FileAppend,
(
[HardwareID]
%HardwareID%
[VolumeID]
%VolumeID%
[IPAddress]
%ExtIP%`n
[Nickname]
%Nicknameinput%`n
), sp.txt
return

F3::
InputBox, Nicknameinput, Nick name, Please enter a nick name
InputBox, ExtIP, IP address, Please enter a IP address

; Как-то ищет в файле sp.txt строку [Nickname] и добавляет после этой строки Nicknameinput и тоже самое для [IPAddress]
FileAppend, %Nicknameinput%`n, sp.txt
FileAppend, %ExtIP%`n, sp.txt
return

То есть после нажатия F2 на выходе выходит такой текстовый файл:

[HardwareID]
S13DJC0S411456      
[VolumeID]
B26D5B47
[IPAddress]
39.44.105.227
[Nickname]
Vasya

Нажимаю F2 ввожу данные и создается файл, далее нажимаю F3 ввожу новые данные, которые добавляются в этот файл.
Как найти в файле sp.txt строку [Nickname] и добавить после этой строки Nicknameinput и тоже самое для [IPAddress]?

После нажатия F3 и ввода каждый раз новых данных надо что бы получился текстовый файл такого вида:

[HardwareID]
S13DJC0S411456      
[VolumeID]
B26D5B47
[IPAddress]
39.44.105.227
12.23.45.666
56.78.12.744
[Nickname]
Vasya
Dima
Valya

5

Re: AHK: Дописывает текст если есть изменения

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


File = %A_ScriptDir%\sp.txt
Filedelete, %File% 

Loop 5
{ 
    IniWrite, %A_TickCount%, %File%, Nickname
    
    IniRead, Var, %File%, Nickname
    MsgBox % Var
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK: Дописывает текст если есть изменения

Спасибо помогло