Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Возможно ли сохранение результата работы скрипта? (http://forum.oszone.net/showthread.php?t=231798)

McLotos 31-03-2012 21:40 1890978

Возможно ли сохранение результата работы скрипта?
 
Доброго времени суток. Интересует один момент. Вот допустим имеется скрипт, который просматривает рабочий стол и вычисляет координаты каждого элемента рабочего стола. Подскажите куда копать, чтобы понять как научить скрипт сохранять полученные данные, а патом при необходимости восстанавливать. Я хочу сделать примерно так:
При первом запуске скрипт просто просматривает рабочий стол, и сохраняет полученную информацию, если запустить ещё раз, то скрипт проверит разницу и спросит что сделать: сохранить новый вариант или вернуться к старому. (готовые решения не предлагать = ) )
если уж учиться, то самому. Можете подсказать какие команды используются для работы с файлами? Интересует чтение, запись, сравнение, перезапись, замена, удаление.

ferget 31-03-2012 23:46 1891062

Цитата:

Цитата McLotos
Можете подсказать какие команды используются для работы с файлами? Интересует чтение, запись, сравнение, перезапись, замена, удаление. »

открываете справку AutoIt, раздел "Файлы, каталоги и диски"

McLotos 01-04-2012 00:20 1891075

Точно. Хорошая идея! = )
Может на примере будет понятней что я хочу.
PHP код:

#include <GuiListView.au3>
#include <Array.au3>
#include <File.au3>

$LogFile = @ScriptDir "/Desktop.log" ;Переменная имени логфайла
$sp
=@DesktopWidth "X" & @DesktopHeight ;Текущее разрешение
$fo
=@DesktopWidth/@DesktopHeight ;Соотношение сторон 

;Если файла не существует его нужно создатьи вбить в него информацию по текущему состоянию рабочего стола.
If 
Not FileExists($LogFileThen
            _FileCreate
($LogFile
             
GetPositions($sp,$fo
    ElseIf 
FileExists($LogFileThen
   
;Здесь должна быть функциякоторая прочитает существующий файл и расставит все значки так как они должны стоять.
EndIf

Func GetPositions($sp,$formula)

Local $hWnd ControlGetHandle("Program Manager""""[CLASS:SysListView32; INSTANCE:1]")
    If @
error Then Return 0
    Dim $Position
[_GUICtrlListView_GetItemCount($hWnd)+1][3]
    If 
Not IsArray($PositionThen Return 
    $Position
[0][0] = UBound($Position) -;Сколько значков на рабочем столе
    FileWrite 
($LogFile,"Параметры дисплея" & @CRLF "Разрешение " $sp & @CRLF "Формат " $fo & @CRLF);Записывам в файл информацию по дисплею.
    ;
Запускаем цикл обработки массива
    
    
For $i 1 To $Position[0][0] ;Начало счетчкика 1конец счетчика количество значков
        $Position
[$i][0] = _GUICtrlListView_GetItemText($hWnd$i -1)      ;Название значка
        $Position
[$i][1] = _GUICtrlListView_GetItemPositionX($hWnd$i -1) ;X-позиция значка
        $Position
[$i][2] = _GUICtrlListView_GetItemPositionY($hWnd$i -1) ;Y-позиция значка
    FileWrite
($LogFile$i ". " $Position[$i][0] & ": " $Position[$i][1] & " " $Position[$i][2] & @CRLF) ;Записываем полученные данные в файл
    Next
 EndFunc 


ferget 01-04-2012 02:24 1891118

Цитата:

Цитата McLotos
Может на примере будет понятней что я хочу. »

понятней не стало, если это смогли написать, то в чем проблема?

считываете строки из файла FileReadLine ( "filehandle/filename" [, line] )

разбиваете строки StringSplit ( "string", "delimiters" [, flag] )

расставляете значки _GUICtrlListView_SetItemPosition($hWnd, $iIndex, $iCX, $iCY)

McLotos 01-04-2012 08:14 1891144

Просто это мой первый скрипт, я учу по ходу написания программы, ну в смысле понадобилась какая-то функция в гугл, мануал, написал, дальше опять, а вот про _GUICtrlListView_SetItemPosition($hWnd, $iIndex, $iCX, $iCY) я нигде ничего не видел.
Закончу, выложу полный скрипт

McLotos 02-04-2012 07:07 1891682

Подскажите, почему при запуске скрипта в Win7 он не записывает в файл имена иконок, а только их координаты

ferget 02-04-2012 08:32 1891720

win7 x32, скрипт, который в сообщении #3, записывает имена иконок

McLotos 02-04-2012 09:15 1891728

всё ясно. он работает только на x32. а почему на 64 не срабатывает?


Время: 17:48.

Время: 17:48.
© OSzone.net 2001-