Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Скрипт для посылания в буфер изменённого пути 
Author Message
Samwatas



PostPosted: Fri Oct 15, 2010 21:22    Post subject: Reply with quote

Кстати, чтобы не вводить вручную все переменные окружения, можно автоматически получать их из системы (посредством cmd-команды set).
Вот набросал пример такой функции:
Code:
#include <Array.au3>

$aArray = _GetAllEnvVar();  Вызываем функцию, возвращающую массив всех переменных окружения,
If @error Then MsgBox(16, @error, @extended); Если не возникло никаких проблем,
_ArrayDisplay($aArray); То показываем полученный массив переменных.

Func _GetAllEnvVar()
Local $aTmp1, $aTmp2, $iReturn, $sConsoleRead = '', $iPID, $vStruct1, $vStruct2
$iPID = Run(@ComSpec & ' /c set', @SystemDir, @SW_HIDE, 2)
While 1
   $sConsoleRead &= StdoutRead($iPID)
   If @error Then ExitLoop
Wend
$vStruct1 = DllStructCreate('char[' & StringLen($sConsoleRead) & ']')
$vStruct2 = DllStructCreate('char[' & StringLen($sConsoleRead) & ']')
DllStructSetData($vStruct1, 1, $sConsoleRead)
$iReturn = DllCall('User32.dll','BOOLEAN', 'OemToCharA', 'ptr', DllStructGetPtr($vStruct1), 'ptr', DllStructGetPtr($vStruct2))
If @error Then Return SetError(@error, @extended, '')
$aTmp1 = StringSplit(DllStructGetData($vStruct2, 1), @CRLF, 3)
If @error Then Return SetError(@error, @extended, '')
Dim $aResult[UBound($aTmp1)-1][2]
For $i = 0 to UBound($aResult)-1
   $aTmp2 = StringSplit($aTmp1[$i], '=')
   If @error Then Return SetError(@error, @extended, '')
   If $aTmp2[0] = 2 Then
      $aResult[$i][0] = $aTmp2[1]
      $aResult[$i][1] = $aTmp2[2]
   Else
      Return SetError(@error, @extended, '')
   EndIf
Next
Return $aResult
EndFunc
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group