Что нового

[Элементы GUI] отображение чекбоксов, в зависимости от записей в ини файле и обработка событий

rivega

Новичок
Сообщения
45
Репутация
1
Доброго времени суток.
Пытаюсь собрать свой собственный стартер(запуск отмеченных программ)

1.Есть файл ини. в нем сейчас 5 пунктов(количество может меняться)
каждый пункт состоит из: имя, пояснение, подсказка, путь к exe1,exe2,exe3(3 этапа работы каждой программы).
2.Что хотелось бы иметь на выходе:
-по каждому пункту формируется строчка состоящая из 3х чекбоксов(запускают экзэшники), название, пояснение, статус разделенный на 3 части соответственно.


Что на данный момент получилось собрать, смотрите ниже.

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

Вопрос-просьба-мольба: безумно устал разбираться в коде(ну совсем не мое, железячник я).....если кому не лень будет- направьте в нужное русло советами и подсказками.
Заранее безумно благодарен.
Код:
#include <GUIConstantsEx.au3>
#include <Array.au3>
#include <GuiButton.au3>
#include <GuiTab.au3>
#NoTrayIcon

FileChangeDir(@ScriptDir) ;назначает рабочий каталог 
$IniName = StringRegExpReplace(@ScriptName, '^(.*?)(?:\.[^.]+)?$', '\1') & '.ini' ;в переменную имя  ини подходящему под шаблон
$Ini = @ScriptDir & '\' & $IniName ; Name.ini = Name.exe ; $Ini -путь к файлу ини
	;если файл ини не существует - создать
If Not FileExists($Ini) Then  
	_Create_ini()
	If Not FileExists($Ini) Then
		;MsgBox(0, $LngErr, $LngMs1 & ' ' & $IniName)
		Exit
	EndIf
 EndIf
 
 Global $aIniSec = IniReadSectionNames($Ini) ; в переменной массив со всеми именами разделов
;назначает переменной числовое представление значения из параметра


$font = IniRead($Ini, 'GUI', 'FontSize', '')             ;размер шрифта кнопок
$fontB = Number(IniRead($Ini, 'GUI', 'FontBold', ''))     ;размер ????(прописан 1)
$icon = IniRead($Ini, 'GUI', 'icon', '')                  ;иконка
$PathPic = IniRead($Ini, 'GUI', 'Picture', '')            ;изображение


If Not StringInStr($PathPic, ':') Then ;если в пути нету : , тогда проверяем первый левый символ на = "/", если равно, то обрезаем его
	If StringLeft($PathPic, 1) = '\' Then StringTrimLeft($PathPic, 1)
	$PathPic = @ScriptDir & '\' & $PathPic      ;скрипт директория \ название изображения
 EndIf
 
Local $mrgn,$GuiName,$CNF,$CNB,$row,$FHeight,$FWidht,$Chkb,$Htab,$Hbat

$mrgn = IniRead($Ini, 'GUI', 'Margin','')
$GuiName = IniRead($Ini, 'GUI', 'Title','') ;имя окна из ини
$CNF = IniRead($Ini, 'GUI', 'ConstName', '50') 
$CNB = IniRead($Ini, 'GUI', 'ConstNamePoyasn', '50')  
$Chkb = 20
$Htab = 30
$Hbat = 30
;описание размеров окна
$row = $aIniSec[0] - 1   ;количество строк
$FWidht = ($mrgn*2)+($Chkb*6)+(7*($mrgn-10))+$CNB+$CNF  ;ширина
$FHeight = ($mrgn*6)+($Chkb*$row)+(($mrgn-5)*($row-2))+$Htab+$Hbat  ;высота +&Htab высота таба+ &Hbat высота кнопки+ $mrgn*2 отступы от текста и от кнопки mrgn*2
$FormWidth = $FWidht
$FormHeight = ($mrgn*6)+($Chkb*$row)+(($mrgn-5)*($row-2))
 
 ;создание гуи
Global $checkbox= $aIniSec
$form = GUICreate("Название", $FWidht, $FHeight, -1, -1)
$tab = GUICtrlCreateTab(-1, -1, $FormWidth, $FormHeight, $TCS_MULTILINE)

$tab1 = GUICtrlCreateTabItem("№1")
 For $i = 1 To UBound($checkbox) -4
    ;$checkbox[$i] = GUICtrlCreateCheckbox(".", $mrgn, $mrgn+($i - 1)*20)
	;$checkbox[$i] = GUICtrlCreateCheckbox(".", $mrgn+30+($mrgn-30), $mrgn+($i - 1)*20)
    $checkbox[$i] = GUICtrlCreateCheckbox($checkbox[$i], $mrgn+2*20+2*($mrgn-20), $mrgn+($i - 1)*20)
 Next
 

$tab2 = GUICtrlCreateTabItem("№2")
GUICtrlSetState(-1,$GUI_SHOW)
 For $i =  4 To UBound($checkbox) - 1
    $checkbox[$i] = GUICtrlCreateCheckbox($checkbox[$i], 24, 12 + ($i - 1)*20)
Next

GUICtrlCreateTabItem("")
$Button1 = GUICtrlCreateButton("Старт", 200, 200, 75, 25)
GUISetState(@SW_SHOW)

;выполнение функций
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            _11()
    EndSwitch
WEnd

Func _11()
    For $i = 1 To UBound($checkbox) - 1
        If GUICtrlRead($checkbox[$i]) = $GUI_CHECKED Then
            Execute('_' & $i & '()')
        EndIf
    Next
EndFunc   ;==>_11

Func _1()
    MsgBox(0, '', 'Действие к exe1')
EndFunc  
Func _2()
    MsgBox(0, '', 'Действие к exe2')
EndFunc  
Func _3()
    MsgBox(0, '', 'Действие к exe3')
EndFunc  
Func _4()
    MsgBox(0, '', 'Действие к exe4')
EndFunc  
Func _5()
    MsgBox(0, '', 'Действие к exe5')
EndFunc  

Func _test_Ini($aIniSec)
	Local $s = Chr(1)
	Assign($s, 1, 1)
	For $i = 1 To $aIniSec[0]
		Assign($aIniSec[$i] & $s, Eval($aIniSec[$i] & $s) + 1, 1)
		If Eval($aIniSec[$i] & $s) = 2 Then
			If $aIniSec[$i] == '' Then
				;MsgBox(0, $LngErr, $LngMs4 & $LngMs5)
				Exit
			EndIf
			MsgBox(0, $LngErr, $LngMs3 & ' "' & $aIniSec[$i] & '"' & $LngMs5)
			Exit
		EndIf
	Next
EndFunc   ;==>_test_Ini

Func _Create_ini()
	$hFile = FileOpen($Ini, 2)
	If $hFile = -1 Then
		MsgBox(4096, $LngErr, $LngMs2)
		Exit
	EndIf
	FileWrite($hFile, '[gui]' & @CRLF & _
			'Title=Launcher' & @CRLF & _			
			'Picture = Launcher.jpg' & @CRLF & _
			'Margin=25' & @CRLF & _			
			'FontSize=12' & @CRLF & _
			'FontBold=1' & @CRLF & _
			'icon=launcher.ico' & @CRLF & _
			'GuiBkColor=3F3F3F' & @CRLF & _
			'ButColor=' & @CRLF & _
			'ConstName=100' & @CRLF & _
			'ConstNamePoyasn=100' & @CRLF & _
			@CRLF & _
			'[1]' & @CRLF & _
			'ConstName=название1' & @CRLF & _
			'ConstNamePoyasn=пояснение1' & @CRLF & _
			'hint=подсказка' & @CRLF & _
			'exe1=notepad.exe' & @CRLF & _
			'exe2=notepad2.exe' & @CRLF & _	
			'exe3=notepad2.exe' & @CRLF & _	
			@CRLF & _
			'[2]' & @CRLF & _
			'ConstName=название2' & @CRLF & _
			'ConstNamePoyasn=пояснение2' & @CRLF & _
			'hint=подсказка' & @CRLF & _
			'exe1=notepad.exe' & @CRLF & _
			'exe2=notepad2.exe' & @CRLF & _	
			'exe3=notepad2.exe' & @CRLF & _	
            @CRLF & _			
			'[3]' & @CRLF & _
			'ConstName=название3' & @CRLF & _
			'ConstNamePoyasn=пояснение3' & @CRLF & _
			'hint=подсказка' & @CRLF & _
			'exe1=notepad.exe' & @CRLF & _
			'exe2=notepad2.exe' & @CRLF & _	
			'exe3=notepad2.exe' & @CRLF & _	
             @CRLF & _			
			'[4]' & @CRLF & _
			'ConstName=название4' & @CRLF & _
			'ConstNamePoyasn=пояснение4' & @CRLF & _
			'hint=подсказка' & @CRLF & _
			'exe1=notepad.exe' & @CRLF & _
			'exe2=notepad2.exe' & @CRLF & _	
			'exe3=notepad2.exe' & @CRLF & _	
			@CRLF & _
			'[5]' & @CRLF & _
			'ConstName=название5' & @CRLF & _
			'ConstNamePoyasn=пояснение5' & @CRLF & _
			'hint=подсказка' & @CRLF & _
			'exe1=notepad.exe' & @CRLF & _
			'exe2=notepad2.exe' & @CRLF & _	
			'exe3=notepad2.exe') 	
	FileClose($hFile)
EndFunc   ;==>_Create_ini

Так трудно сделать?
madmasles
 

Medic84

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


С уважением, ваш Администратор.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
rivega
А предыдущий пост можно же исправить.
http://www.autoitscript.com/forum/topic/147882-frabjous-installation-10/#entry1049575
 
Автор
R

rivega

Новичок
Сообщения
45
Репутация
1
AZJIO
Спасибо огромное за подсказку(исправил).


Тот в том скрипте, который вы предложили определенное статичное количество программ и чекбоксов......у меня же задача стоит- в зависимости от количества программ в ини файле, отрисовывать по 3 чекбокса в строке(старт этой программы, старт ее конфига 1,старт ее конфига 2). И опрос состояний.


Как сделать статично, я понимаю, а вот как отображать(да еще и опрашивать) только то что есть в конфиге не могу сообразить
 

Sanasol

Новичок
Сообщения
1
Репутация
0
Код:
#include <GUIConstantsEx.au3>
#include <Array.au3>
#include <GuiButton.au3>
#include <GuiTab.au3>
#include <GuiStatusBar.au3>
#NoTrayIcon

FileChangeDir(@ScriptDir) ;назначает рабочий каталог 
$IniName = StringRegExpReplace(@ScriptName, '^(.*?)(?:\.[^.]+)?$', '\1') & '.ini' ;в переменную имя  ини подходящему под шаблон
$Ini = @ScriptDir & '\' & $IniName ; Name.ini = Name.exe ; $Ini -путь к файлу ини
;если файл ини не существует - создать
If Not FileExists($Ini) Then  
	_Create_ini()
	If Not FileExists($Ini) Then
		;MsgBox(0, $LngErr, $LngMs1 & ' ' & $IniName)
	Exit
EndIf
EndIf

Global $aIniSec = IniReadSectionNames($Ini) ; в переменной массив со всеми именами разделов
Global $aParts[1] = [100]
;назначает переменной числовое представление значения из параметра


$font = IniRead($Ini, 'GUI', 'FontSize', '')             ;размер шрифта кнопок
$fontB = Number(IniRead($Ini, 'GUI', 'FontBold', ''))     ;размер ?(прописан 1)
$icon = IniRead($Ini, 'GUI', 'icon', '')                  ;иконка
$PathPic = IniRead($Ini, 'GUI', 'Picture', '')            ;изображение


If Not StringInStr($PathPic, ':') Then ;если в пути нету : , тогда проверяем первый левый символ на = "/", если равно, то обрезаем его
	If StringLeft($PathPic, 1) = '\' Then StringTrimLeft($PathPic, 1)
$PathPic = @ScriptDir & '\' & $PathPic      ;скрипт директория \ название изображения
EndIf

Local $mrgn,$GuiName,$CNF,$CNB,$row,$FHeight,$FWidht,$Chkb,$Htab,$Hbat

$mrgn = IniRead($Ini, 'GUI', 'Margin','')
$GuiName = IniRead($Ini, 'GUI', 'Title','') ;имя окна из ини
$CNF = IniRead($Ini, 'GUI', 'ConstName', '50') 
$CNB = IniRead($Ini, 'GUI', 'ConstNamePoyasn', '50')  
$Chkb = 20
$Htab = 30
$Hbat = 30
;описание размеров окна
$row = $aIniSec[0] - 1   ;количество строк
$FWidht = ($mrgn*2)+($Chkb*6)+(7*($mrgn-10))+$CNB+$CNF  ;ширина
$FHeight = ($mrgn*6)+($Chkb*$row)+(($mrgn-5)*($row-2))+$Htab+$Hbat  ;высота +&Htab высота таба+ &Hbat высота кнопки+ $mrgn*2 отступы от текста и от кнопки mrgn*2
$FormWidth = $FWidht
$FormHeight = ($mrgn*6)+($Chkb*$row)+(($mrgn-5)*($row-2))

;создание гуи
Global $checkbox= $aIniSec
Global $checkbox_array[99][4]
$form = GUICreate("Название", $FWidht, $FHeight, -1, -1)
$bar = _GUICtrlStatusBar_Create($form)
 _GUICtrlStatusBar_SetParts($bar, $aParts)
$tab = GUICtrlCreateTab(-1, -1, $FormWidth, $FormHeight, $TCS_MULTILINE)

$tab1 = GUICtrlCreateTabItem("№1")
For $i = 1 To UBound($checkbox) -4
    ;$checkbox[$i] = GUICtrlCreateCheckbox(".", $mrgn, $mrgn+($i - 1)*20)
	;$checkbox[$i] = GUICtrlCreateCheckbox(".", $mrgn+30+($mrgn-30), $mrgn+($i - 1)*20)
	$var = IniRead($Ini, $i, 'ConstName', '50')  
$checkbox[$i] = GUICtrlCreateCheckbox($checkbox[$i], $mrgn+2*20+2*($mrgn-20)+($i*40), $mrgn)
Next


$i2=0;
$top = 0;
$left = 1;
$tab2 = GUICtrlCreateTabItem("№2")
GUICtrlSetState(-1,$GUI_SHOW)
For $i =  2 To UBound($checkbox) - 2
	$i2 = $i2+1
	if $i2 = 1 Then 
		$top=$top+50 
		$i2 = 0
	$left = 1;
	EndIf 
	GUICtrlSetFont(GUICtrlCreateLabel(IniRead($Ini, $i, 'ConstName', ''), 1+($left+10), $top), 10)
	GUICtrlSetFont(GUICtrlCreateLabel(IniRead($Ini, $i, 'ConstNamePoyasn', ''), 1+($left+10), $top+13), 8)
	$checkbox_array[$i][0] = ''
	$var = IniRead($Ini, $i, 'exe1', '50')
	$checkbox_array[$i][1] = GUICtrlCreateCheckbox($var, 1+($left*90), $top)
	$var = IniRead($Ini, $i, 'exe2', '50')  
	$checkbox_array[$i][2] = GUICtrlCreateCheckbox($var, 1+(($left+1)*90), $top)
	$var = IniRead($Ini, $i, 'exe3', '50')
	$checkbox_array[$i][3] = GUICtrlCreateCheckbox($var, 1+(($left+2)*90), $top)
	$left = $left+1;

Next

GUICtrlCreateTabItem("")
$Button1 = GUICtrlCreateButton("Старт", 200, 480, 75, 25)
GUISetState(@SW_SHOW)

;выполнение функций
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
		Exit
        Case $Button1
		_11()
EndSwitch
WEnd

Func _11()
    For $i = 1 To UBound($checkbox_array, 1) - 1
		For $z = 1 To UBound($checkbox_array, 2) - 1
			If GUICtrlRead($checkbox_array[$i][$z]) = $GUI_CHECKED Then
			Execute('_checkbox_call(' & $i & ', ' & $z & ')')
			EndIf
		Next
	Next
	_GUICtrlStatusBar_SetText($bar, 'Все задания выполнены')
EndFunc   ;==>_11

Func _checkbox_call($i, $z)
	$var = IniRead($Ini, $i, 'exe'&$z, '50')  
	;MsgBox(0, '', $var)
	Run($var)
	While ProcessExists($var)
		Sleep (1)
		_GUICtrlStatusBar_SetText($bar, 'Выполняется программа '&$i&': '&$var)
	WEnd;
	_GUICtrlStatusBar_SetText($bar, 'Выполнено '&$i&': '&$var)
EndFunc

Func _test_Ini($aIniSec)
	Local $s = Chr(1)
	Assign($s, 1, 1)
	For $i = 1 To $aIniSec[0]
		Assign($aIniSec[$i] & $s, Eval($aIniSec[$i] & $s) + 1, 1)
		If Eval($aIniSec[$i] & $s) = 2 Then
			If $aIniSec[$i] == '' Then
				;MsgBox(0, $LngErr, $LngMs4 & $LngMs5)
			Exit
			EndIf
			MsgBox(0, $LngErr, $LngMs3 & ' "' & $aIniSec[$i] & '"' & $LngMs5)
		Exit
	EndIf
Next
EndFunc   ;==>_test_Ini

Func _Create_ini()
	$hFile = FileOpen($Ini, 2)
	If $hFile = -1 Then
		MsgBox(4096, $LngErr, $LngMs2)
	Exit
	EndIf
	FileWrite($hFile, '[gui]' & @CRLF & _
	'Title=Launcher' & @CRLF & _         
	'Picture = Launcher.jpg' & @CRLF & _
	'Margin=25' & @CRLF & _         
	'FontSize=12' & @CRLF & _
	'FontBold=1' & @CRLF & _
	'icon=launcher.ico' & @CRLF & _
	'GuiBkColor=3F3F3F' & @CRLF & _
	'ButColor=' & @CRLF & _
	'ConstName=100' & @CRLF & _
	'ConstNamePoyasn=100' & @CRLF & _
	@CRLF & _
	'[1]' & @CRLF & _
	'ConstName=название1' & @CRLF & _
	'ConstNamePoyasn=пояснение1' & @CRLF & _
	'hint=подсказка' & @CRLF & _
	'exe1=notepad.exe' & @CRLF & _
	'exe2=notepad2.exe' & @CRLF & _   
	'exe3=notepad2.exe' & @CRLF & _   
	@CRLF & _
	'[2]' & @CRLF & _
	'ConstName=название2' & @CRLF & _
	'ConstNamePoyasn=пояснение2' & @CRLF & _
	'hint=подсказка' & @CRLF & _
	'exe1=notepad.exe' & @CRLF & _
	'exe2=notepad2.exe' & @CRLF & _   
	'exe3=notepad2.exe' & @CRLF & _   
	@CRLF & _         
	'[3]' & @CRLF & _
	'ConstName=название3' & @CRLF & _
	'ConstNamePoyasn=пояснение3' & @CRLF & _
	'hint=подсказка' & @CRLF & _
	'exe1=notepad.exe' & @CRLF & _
	'exe2=notepad2.exe' & @CRLF & _   
	'exe3=notepad2.exe' & @CRLF & _   
	@CRLF & _         
	'[4]' & @CRLF & _
	'ConstName=название4' & @CRLF & _
	'ConstNamePoyasn=пояснение4' & @CRLF & _
	'hint=подсказка' & @CRLF & _
	'exe1=notepad.exe' & @CRLF & _
	'exe2=notepad2.exe' & @CRLF & _   
	'exe3=notepad2.exe' & @CRLF & _   
	@CRLF & _
	'[5]' & @CRLF & _
	'ConstName=название5' & @CRLF & _
	'ConstNamePoyasn=пояснение5' & @CRLF & _
	'hint=подсказка' & @CRLF & _
	'exe1=notepad.exe' & @CRLF & _
	'exe2=notepad2.exe' & @CRLF & _   
	'exe3=notepad2.exe')    
FileClose($hFile)
EndFunc   ;==>_Create_ini
 

chymax3m

Новичок
Сообщения
26
Репутация
1
Вот отрывок кода, когда-то тоже пробовал осуществить что-то подобное, но то времени нету, то желания...
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
;Создаем форму с фоновой картинкой
$Form1 = GUICreate("Soft 4free", 872, 601, 192, 94, $GUI_SS_DEFAULT_GUI)
$Pic1 = GUICtrlCreatePic(@ScriptDir&"\1.bmp", 0, 0, 871, 600)
GUICtrlSetState($Pic1, $GUI_DISABLE)
;Зчитываем масив категорий с ini-файла
$Cat=IniReadSection ( @ScriptDir&"\Trans.ini", "Categories" )
;Задаем размещение первого лэйбла с названием категории
$Top=15
$Left=300
;Создаем лэйблы категорий
For $i = 1 to UBound($Cat, 1)-1
	GUICtrlCreateLabel ($Cat[$i][1],300,  $Top , 50, 14,"",$WS_EX_TRANSPARENT)
	GUICtrlSetColor(-1, 0xFF6690)
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
;Задаем значение вертикального расположения	первого чекбокса относительно лэйбла категории
	$PTop=$Top-20
	$Prog=IniReadSection ( @ScriptDir&"\Trans.ini", $Cat[$i][1] )
If IsArray ($Prog)Then ; Проверяем есть ли список программ для данной категории 
	
For $n = 1 to UBound($Prog, 1)-1
If $n/2>2 and $n/2<=4 then
	$PTop=$Top-96
	$Left=495
EndIf
If $n/2>4 and $n/2<=6 Then
	$PTop=$Top-172
	$Left=640
EndIf
If Not Mod($n, 2)=0 Then
;Создаем чекбокс с иконкой для приложения	
GUICtrlCreateCheckbox ("",$Left, $PTop+38*Round($n/2), 36, 36, BitOR($BS_PUSHLIKE,$BS_ICON), $WS_EX_TRANSPARENT)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) 
GUICtrlSetImage(-1, @ScriptDir&"\Icons\"&$Prog[$n][1]&".ico", 1)
;Создаем лэйбл с названием программы
GUICtrlCreateLabel ($Prog[$n][1],$Left+40,  $PTop+38*Round($n/2)+5 , 140, 14,"",$WS_EX_TRANSPARENT)
GUICtrlSetColor(-1, 0xFF6690)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Else ;Создаем лэйбл с кратким описанием программы
GUICtrlCreateLabel ($Prog[$n][1],$Left+40,  $PTop+38*$n/2+19 , 140, 14,"",$WS_EX_TRANSPARENT)
GUICtrlSetColor(-1, 0xFF6690)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
EndIf
Next
EndIf
$Left=300
$Top=$Top+585/(UBound($Cat, 1)-(UBound($Cat, 1)-1)/UBound($Cat, 1))
Next	


GUISetState(@SW_SHOW)
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

		Case $Form1
	
	EndSwitch
WEnd
А вот сам файл ini:
Код:
[WinOptions]


[Categories]
C1=System
C2=Office
C3=Audio
C4=Video


[System]
N1=.Net Framework
C1=----
N2=VC Redistributable 2005-2010-2012
C2=----
N3=DirectX
C3=----

[Video]
V1=KMPlayer
С1=Видео плеер
V2=PotPlayer
С2=Видео плеер
V3=VLC
С3=Видео плеер
V4=K-lite Codec Pack
С4=Пакет кодеков
V5=VSDC Free Video Converter
С5=Видеоконвертер

[Audio]
A1=Aimp
C1=Музикальный плеер
A2=Audacity
C2=Редактор аудио
Но это лиш сирье, так сказать, чтоб обьяснить возможный принцип работы.. :-[
 
Верх