Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

Открыть новую тему     Написать ответ в эту тему

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые и смежные темы: по CMD и в Программах | по PowerShell | В помощь системному администратору | Прикладное программирование

PowerShell
Версии | Ассоциация и подпись сценариев
Сценарий для ассоциации файлов PowerShell и запуска неподписанных скриптов.
 
Прочее
Расширение возможностей
Функции
Write-Color
Output-DebugString
Провайдеры
Готовые скрипты
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?
Книги в PDF
Cheat Sheets
 

Cmd
Для перекодирования кириллицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
 
Готовые решения и частые вопросы
 
Описания работы команд и символов участниками темы:
setlocal enabledelayedexpansion и переменные окружения
символы & и && в командной строке
Переменная %0
 
Полезные ссылки и утилиты

WSH (VBScript, JScript)
Программирование "удобняшек" на VBScript

Примечания:
• Большие куски кода заключайте в тэг [ more ]
• Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте код без пробелов иначе сценарий может работать неправильно. Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

Всего записей: 11062 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: YuS 2, 08:24 19-06-2021
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2

Цитата:
Нет, в данном случае кавычки необязательны, вклеил их на автопилоте

Но без кавычек $TotalDuration не выводит ничего. Надо обязательно почему-то "$TotalDuration".

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 12:57 15-09-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
В коде инициализации не должно быть все этого.

Хмм, а где код инициализации? давай разграничивать будем...
Кто сказал, что VM - это класс и только?
Код инициализации, это, собственно, загрузка формы:

Код:
$Window = [Windows.Markup.XamlReader]::Parse($xaml)

и пуск таймера при загрузке формы:

Код:
$Window.add_loaded({
    $timer.start()
})

Это модель M:

Код:
$data = {get-service}

Это VM:

Код:
[ViewModel] $VM = [ViewModel]::new((&$data))

Это V:
собственно, код xaml.
 
Это связь M-VM-V:

Код:
$Window.DataContext = $VM
 
function update() {
    $VM.SetServices((&$data))
}

И остается только описание класса, которое мы легко можем отнести к VM.
Что именно не укладывается в схему? Не понял.
 

Цитата:
где настройка автообновление=да/нет и при нет, таймер вообще не нужно создавать.

таймер - вообще, вспомогательная штука. Таймер можно совсем убрать и заменить его кнопкой "обновление" и привязать к ней функцию update:

Код:
function update() {
    $VM.SetServices((&$data))
}

и поолучится, что запрос от V идет в VM, а VM, в свою очередь, получает данные от M и передает в V...
В общем, непонятно возражение по поводу отклонения от схемы...
 
Добавлено:
farag

Цитата:
Но без кавычек $TotalDuration не выводит ничего. Надо обязательно почему-то "$TotalDuration".

Не знаю, у меня выводит и без кавычек, нужен только write-host

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 13:48 15-09-2019 | Исправлено: YuS_2, 13:57 15-09-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2

Цитата:
Код инициализации, это, собственно, загрузка формы:

Цитата:
и пуск таймера при загрузке формы:

  Нет. Инициализация — создание объектов. Формы, данных, модели представления.

Код:
$Window = [Windows.Markup.XamlReader]::Parse($xaml) # создание формы
$data = {get-service} # создание данных
[ViewModel] $VM = [ViewModel]::new($data) #связь данных с моделью представления
$Window.DataContext = $VM # связь формы с моделью представления


    $Window.add_loaded — этого, вообще быть не должно.
    таймер, update()     — логика и работа с данными = в модель представления.

  События или в форме (если не касается данных) или в модели представления (если хоть как касается данных).
 
  Делить на файлы. Каждый в принципе должен разрабатываться(не одним разрабом)/тестироваться отдельно
MainForm.xaml
MainFormInit.ps1
MainFormVM.ps1
Model.ps1
 
  Не пошик, но может понятнее, чем я пишут: WPF | Команды в MVVM
 

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 19:28 15-09-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
Нет. Инициализация — создание объектов. Формы, данных, модели представления.

Ну, в принципе да, логично.
 

Цитата:
События или в форме (если не касается данных) или в модели представления (если хоть как касается данных).

А тут вот не вижу аргументации - почему так?
И к тому же: перешел по ссылке и в первых же строках:

Цитата:
Для взаимодействия пользователя и приложения в MVVM используются команды. Это не значит, что вовсе не можем использовать события и событийную модель, однако везде, где возможно, вместо событий следует использовать команды.

Но, вот это вот "следует использовать", опять же ничем не аргументируется. В смысле почему не использовать то, что предоставляет язык? Мы ведь не в C# пишем, для компиляции, а всего лишь скрипт powershell и если инструменты существуют, то почему не пользоваться? Вот, что непонятно.
 
Далее:

Цитата:
$Window.add_loaded — этого, вообще быть не должно.

убирая таймер, мы легко избавляемся от этого, но ... почему не должно? В чем недостаток?
 

Цитата:
таймер, update()     — логика и работа с данными = в модель представления.

по таймеру - понятно...
update - можно и сейчас вынести в:

Код:
$vm.services.refresh()

но чего-то там не хватает... данные обновляются в VM, но в интерфейс не передаются, я проверял.
 

Цитата:
Каждый в принципе должен разрабатываться(не одним разрабом)/тестироваться отдельно

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

Цитата:
Не пошик, но может понятнее, чем я пишут: WPF | Команды в MVVM

Да, читал ранее, бегло и не вдумчиво, ибо не powershell...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:11 15-09-2019 | Исправлено: YuS_2, 20:35 15-09-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2

Цитата:
В смысле почему не использовать то, что предоставляет язык?

Никто не запрещает, по ссылке же написано.
Но, если следовать за MVVM, то надо разделять на независимые слои.
Дабы убрать (хотя бы уменьшить связность) разрабатывать и тестировать, раздельно, каждый модуль.
 
$Window.add_loaded повышает связность, если касается исключительно формы и не касается данных то в форме ему место, но никак ни в инициализации. В vm, тоже не вариант, опять же vm не знает о window и не должна. Если данных касается то делается не так, а привязкой данных, как $Services, только для события формы.

Цитата:
но чего-то там не хватает... данные обновляются в VM, но в интерфейс не передаются, я проверял.
Поэтому и не 100% рабочий

Цитата:
попроще чего-нибудь

А тут, поэтому и писал, что вряд ли это так уж нужно на пошике, хоть мне и любопытно
 
 
Добавлено:
farag

Цитата:
Но без кавычек $TotalDuration не выводит ничего. Надо обязательно почему-то "$TotalDuration".

Вот тоже интересно, может где глобальный атрибут, какой, отключает это дело.
 
Я хз точно, но предположу (пальцем в небо), что два объекта, пошик пытается объединить в один, не выходит, один игнорирует.
А когда кавычки или write-host и т.д. преобразование в строку, её выводит.
XML для вывода никто не делает?
 
Идеологически правильно делить такие функции. Массив данных и итог.

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 21:10 15-09-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
Но, если следовать за MVVM, то надо разделять на независимые слои.  
Дабы убрать (хотя бы уменьшить связность) разрабатывать и тестировать, раздельно, каждый модуль.

А, ну если в этом смысл... то понятно. Но это уже не сильно интересно, пока, на данном этапе...
 

Цитата:
$Window.add_loaded повышает связность, если касается исключительно формы и не касается данных то в форме ему место, но никак ни в инициализации.

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

Цитата:
Поэтому и не 100% рабочий

Есть предположение, что Services у нас и не изменяется, если останавливать и запускать сервисы, а вот при удалении/добавлении - возможно и будет... надо проверять.
 

Цитата:
вряд ли это так уж нужно на пошике, хоть мне и любопытно

Нужно всё, что вызывает любопытство...
 

Цитата:
что два объекта, пошик пытается объединить в один, не выходит, один игнорирует.

Вероятнее всего, ибо объекты имеют различный тип.
 

Цитата:
А когда кавычки или write-host и т.д. преобразование в строку, её выводит.

просто с кавычками, тоже не выведет, ибо тоже не подходящий тип данных, а write-host перенаправляет вывод в консоль(причем с более высоким приоритетом), всего лишь, вместо автоматического write-output.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 22:00 15-09-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такой вот вышел каменный цветок

Код:
function Get-Duration {
    param (
        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript( { Test-Path -Path $_ -PathType Container } )]
        [string[]] $Path
    )
 
    begin {
        [System.__COMObject] $Shell = New-Object -ComObject Shell.Application
 
        $Params = @{
            Name        = 'ID_PROPERTY_DURATION'
            Value       = 27
            Option      = 'Constant'
            Visibility  = 'Private'
            Description = 'Идентификатор свойства "Проодника" — "Продолжительность"'
            Force       = $true
        }
 
        Set-Variable @Params
    }
 
    process {
        $Files = Get-ChildItem -Path $Path -File
 
        foreach ($File in $Files) {
            $Folder = $Shell.Namespace($File.DirectoryName) # для каждого файла папку?
            $FileName = $Folder.ParseName($File.Name)
            $Duration = [timespan] $Folder.GetDetailsOf($FileName, $ID_PROPERTY_DURATION)
            $File | Add-Member -MemberType NoteProperty -Name Duration -Value $Duration
            $File
        }
    }
}

Так его использовать

Код:
$Path = 'F:\Download\Episodes', 'F:\Download\Episodes\По долгу службы'
$GetDDuration = Get-Duration $Path
 
$Sum = [timespan]::Zero
 
foreach ($Duration in $GetDDuration.Duration) { $Sum += $Duration }
 
$GetDDuration | Format-Table -AutoSize Name, Length, Duration -GroupBy Directory
"Общая продолжительность: " + $Sum.ToString()

Или так

Код:
$Path = 'F:\Download\Episodes', 'F:\Download\Episodes\По долгу службы'
$AllSum = [timespan]::Zero
 
foreach ($Item in $Path) {
    $GetDDuration = Get-Duration $Item
    $Sum = [timespan]::Zero
    foreach ($Duration in $GetDDuration.Duration) { $Sum += $Duration }
 
    $GetDDuration | Format-Table -AutoSize Name, Length, Duration
    $Item + " — Общая продолжительность: " + $Sum.ToString()
    $AllSum += $Sum
}
 
"Общая продолжительность: " + $AllSum.ToString()

 
А как бы сразу с подкаталогами, а если вложенность -gt 3…

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 23:43 15-09-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
А как бы сразу с подкаталогами, а если вложенность -gt 3


Код:
function testpth($x){
    if(test-path $x -pathtype container){
        dir -lit $x -inc $flt|?{!$_.psiscontainer}
    } elseif (test-path $x -pathtype leaf){
        gi -lit $x
    } else {
        write-host Path no correct
        sleep -s 5
        break
    }
}
function info($var,$k){
    process{
        $a = new-object -com 'shell.application'
        $b = $a.namespace($var.directoryname)
        $rslt = $b.getdetailsof($b.parsename($var.name),$propnum)
        if($rslt){
            [pscustomobject]@{
                IDFile = $k
                IDProp = $propnum
                Name = $var.name
                FullName = $var.fullname
                Type = $b.getdetailsof($null,$propnum)
                Context = $rslt
            }
        }
    }
}
 
$path = 'e:\root'
$flt = '*.mpg','*.avi','*.mkv','*.mp4','*.3gp','*.vob'
$propnum = 27
 
$arr = (dir -lit $path -dir -rec)+(gi -lit $path)|
%{testpth $_.fullname}|%{$n=0}{info $_ $n;$n++}
 
$arr|ft idprop,fullname,context
try{
    $total = [timespan]::new(0,0,(([timespan[]]$arr.context).totalseconds|
    measure -sum).sum)
    "Общая продолжительность: $total"
}catch{
    write-host 'Context' не является продолжительностью медиафайла: "`n" $_ -for red
}

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 09:22 16-09-2019 | Исправлено: YuS_2, 09:43 16-09-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
У меня ошибку выдаёт

Код:
Сбой вызова метода из-за отсутствия в [System.IO.DirectoryInfo] метода с именем "op_Addition".
строка:34 знак:1
+ $arr = (dir -lit $path -dir -rec) + (gi -lit $path)|
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (op_Addition:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 19:56 16-09-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
У меня ошибку выдаёт

а, ну да, если подкаталог один, то будет такая ошибка...

Код:
$arr = [array](dir -lit $path -dir -rec) + (gi -lit $path)|...

спасет положение...
Но у меня тут есть уже обновленный скрипт из шапки:

Код:
[CmdletBinding()]
Param (
    [string[]]$items = ('file.mp4','d:\root'),
    [string[]]$filter = ('*.mpg','*.avi','*.mkv','*.mp4','*.3gp','*.vob'),
    [ValidateRange(0,1024)]
    [int[]]$propnum = (27..28+29..30+500), # или (1,4,18)
    [switch]$recurse,
    [switch]$force
)
 
function testpth($x){
    $pars = @{}
    $pars.path = [management.automation.wildcardpattern]::escape($x)
    if ($force){$pars.force = $true}
    if ($filter){$pars.include = $filter}
    if(test-path $x -pathtype container){
        $pars.path += '\*'
        if ($recurse){$pars.recurse = $true}
        dir @pars|?{!$_.psiscontainer}
    } elseif (test-path $x -pathtype leaf){
        gi @pars
    } else {
        write-host Path no correct
        sleep -s 5
        break
    }
}
function info($var,$k){
    process{
        $a = new-object -com 'shell.application'
        $b = $a.namespace($var.directoryname)
        [int]$i=0
        foreach($i in $propnum){
            $rslt = $b.getdetailsof($b.parsename($var.name),$i)
            if($rslt){
                [pscustomobject]@{
                    IDFile = $k
                    IDProp = $i
                    Name = $var.name
                    FullName = $var.fullname
                    Type = $b.getdetailsof($null,$i)
                    Context = $rslt
                }
            }
        }
    }
}
 
$arr = $items|%{testpth $_}|%{$n=0}{info $_ $n;$n++}
 
$arr|ft idfile,idprop,fullname,type,context
if ($propnum.length -eq 1 -and $propnum -eq 27){
    try{
        $total = [timespan]::new(0,0,(([timespan[]]$arr.context).totalseconds|
        measure -sum).sum)
        "Общая продолжительность: $total"
    }catch{
        write-host 'Context' не является продолжительностью медиафайла: "`n" $_ -for red
    }
}
 
<#
# Подготовка хэш-таблиц с последующей группировкой
$p = $arr|group idfile -ashash -asstr
# Вывод в отдельные файлы
1..$p.count|%{
    $name = [string]($p."$_".context[0]) + '.txt'
    $p."$_"|out-file -app -lit $name
}
#>

Он пока не закончен ещё, но пользоваться можно... только вывод подправить как требуется и всё, в этой строке:

Код:
$arr|ft idfile,idprop,fullname,type,context

Пример использования:

Код:
.\script.ps1 -item 'd:\root1','d:\root2','d:\root3\file.mp4' -propnum 27 -recurse -force

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:56 16-09-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Нет группировки по каталогам
 
 
А зачем ValidateRange(0,1024)

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 21:22 16-09-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
Нет группировки по каталогам

В перечень кастомного объекта надо добавить свойство

Код:
DirectoryName = $var.directoryname

и будет группировка...
 

Цитата:
А зачем ValidateRange(0,1024)

по сути, не нужно, свойств таких нет, вроде бы, но чтобы обработка не зависала надолго, при случайном вводе большого числа, добавил.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 21:48 16-09-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Список доступных свойств

Код:

function Get-FileExtendedPropertiesList {
    param (
        # Полный путь к папке
        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript( { Test-Path -Path $_ -PathType Container } )]
        [string] $Path
    )
 
    $ShellApp = New-Object -ComObject Shell.Application
    $Folder = $ShellApp.Namespace($Path)
 
    foreach ($Id in (0..0xFFFF)) {
        $Name = $Folder.GetDetailsOf($null, $Id)
 
        if (!$Name) {
            break
        }
 
        [PSCustomObject] @{
            Id   = $Id
            Name = $Name
        }
    }
}

0xFFFF — с потолка, хз какие ограничения

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 00:18 17-09-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
Список доступных свойств

Это каталога.
А список доступных свойств файла, может варьироваться в зависимости от типа файла...  
 

Цитата:
с потолка, хз какие ограничения

вот и мне было лень копать...  
1024 - просто прогнал несколько файлов и свойств там было не больше...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 08:15 17-09-2019 | Исправлено: YuS_2, 08:19 17-09-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2

Цитата:
А список доступных свойств файла, может варьироваться в зависимости от типа файла...  

Это как? Сторонние расширения? И как их получить?

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 19:44 17-09-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
Это как? Сторонние расширения? И как их получить?

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

Код:
.\script.ps1 -item 'd:\root1' -filter '*.*' -propnum (1..2048) -force

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

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 21:26 17-09-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
А не то же самое?
$b.getdetailsof($null, $i) VS $Folder.GetDetailsOf($null, $Id)
У тебя IDProp: 0 потерялся куда то, имя?

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 22:29 17-09-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
А не то же самое?  
$b.getdetailsof($null, $i) VS $Folder.GetDetailsOf($null, $Id)

да, то же самое. Но что на выходе-то? Название свойства и всё...  
для каталога от 0 до 51, в твоей функции, а файлы она выплевывает, ибо не проходит валидацию.
 
для .mp4
.mp4
для .jpg
.jpg
 

Цитата:
У тебя IDProp: 0 потерялся куда то, имя?  

Что-то там у меня не получалось с выводом значений в файл, когда получаем свойства из единственного файла... плюнул на Имя, т.к. оно есть и так
Завтра уже буду ковырять...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 22:53 17-09-2019 | Исправлено: YuS_2, 22:56 17-09-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А ну да, -propnum (1..2048)  
 
Добавлено:
YuS_2
для .mp4, для .jpg, и какие это свойства? дубли файл инфо? значимых свойств вроде не прибавляется.
 
Ну разница то в назначении, у тебя сразу получать значения, у меня только Id и имя свойства для дальнейшей работы, проверки/указания id свойства. Дабы узнавать какой id можно указывать

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 22:53 17-09-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
для .mp4, для .jpg, и какие это свойства? дубли файл инфо?

.jpg
.mp4
А значимые они или нет, будет решать тот, кому необходимо получать эти свойства...
 

Цитата:
у тебя сразу получать значения, у меня только Id и имя свойства для дальнейшей работы

У меня получать НЕпустые значения.
 

Цитата:
Дабы узнавать какой id можно указывать

Обрати внимание, твоя функция выдает перечень ID от 0 до 51, хоть и задан максимум до FFFF, но их существует больше...
Это знание нам дает мало информации... т.е. она неполная.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 23:46 17-09-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru