Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для proxy

Старожил


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

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


Код: Выделить весь код
#region: - Option
    Opt('MustDeclareVars',      1)
    Opt('TrayIconDebug',        1)
    Opt('TrayIconHide',         0)
#endregion

#region: - Include
    #include <Array.au3>
#endregion

Global  $test_var, $aFilesList
Global  $sDirPath = @WindowsDir & '\help'

$aFilesList = _CreateInstalFilesList($sDirPath, '*.*')
Switch @Error
    Case 0
        _ArrayDisplay($aFilesList, '$aFilesList')
        _WriteToNotepad($aFilesList)
    Case -1
        MsgBox(64, 'Внимание', 'В папке назначения нет искомых файлов')
    Case 1
        MsgBox(64, 'Внимание', 'Ошибка определения нового пути назначения')
EndSwitch

Func _CreateInstalFilesList($sDirFromPath, $sFilesMask)
    Global  $hSearch, $sFile, $sFilePath, $aResult[1]
            $aResult[0] = 0

    If StringRight($sDirFromPath, 1) == '\' Then $sDirFromPath = StringTrimRight($sDirFromPath, 1)

    $hSearch = FileFindFirstFile($sDirFromPath & '\' & $sFilesMask)
    If $hSearch == -1 Then
;~      MsgBox(64, 'Внимание', 'В папке назначения нет искомых файлов')
        SetError(-1)
        Return -1
    EndIf

    $sFilePath = StringSplit($sDirFromPath, '\')
    If @Error == 1 Then
;~      MsgBox(64, 'Внимание', 'Ошибка определения нового пути назначения')
        SetError(1)
        Return 1
    Else
        $sFilePath = $sFilePath[$sFilePath[0]]
    EndIf

    While 1
        $sFile = FileFindNextFile($hSearch)
        If @Error Then ExitLoop

        If NOT StringInStr(FileGetAttrib($sDirFromPath & '\' & $sFile), 'D') Then
            $aResult[0] += 1
            ReDim $aResult[$aResult[0]+1]

            $aResult[$aResult[0]] = 'FileInstall("' & $sFilePath & '\' & $sFile & '", $test_var & ' & '"\' & $sFilePath & '\' & $sFile & '", 1)'
        EndIf
    WEnd
    FileClose($hSearch)

    SetError(0)
    Return $aResult
EndFunc

Func _WriteToNotepad(ByRef $aFilesList)
    Local $iPid, $iHwd, $i, $sFilesList
    $iPid = Run('notepad.exe')
    While 1
        $iHwd = _ProcessGetWindow($iPid)
        If IsHWnd($iHwd) Then ExitLoop
    WEnd
    WinWait($iHwd)

    For $i=1 To $aFilesList[0]
        $sFilesList &= $aFilesList[$i]
        If $i < $aFilesList[0] Then $sFilesList &= @CRLF
    Next

    ControlSetText($iHwd, '', '[CLASS:Edit; INSTANCE:1]', $sFilesList)
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

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

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

Отправлено: 03:44, 30-03-2009 | #2