Войти

Показать полную графическую версию : воспроизвести ссылку на медиафайл в буфере обмена


neebet01
12-01-2017, 07:04
Стоит задача как можно быстрее воспроизвести файл по ссылке в буфере обмена. Как реализовать?

greg zakharov
12-01-2017, 10:04
Допустим в буфере есть некая ссылка. В случае с PowerShell о "как можно быстрее" можно забыть, по крайней мере, если речь идет о версиях ниже 4. Сам принцип будет примерно таким:
if ($PSVerstionTable.PSVersion.Major -ge 4) {
Start-Process (Get-Clipboard)
}
else {
if ($host.Runspace.ApartmentState -ne 'sta') {
powershell -NoProfile -STA -ExecutionPolicy Bypass {
Add-Type -AssemblyName System.Windows.Forms
Start-Process ([Windows.Forms.Clipboard]::GetText())
}
}
}
Однако плюсом в случае с PowerShell будет возможность проверки в буфере данных на валидность\корректность, а при желании - evil marks, словом, подятнуть болты на безопасноти можно без особых приключений на пятую точку.
Что касается скорости, здесь можно пойти таким путем:
@echo off
setlocal
set "x=mshta "javascript:var s=clipboardData.getData("
set "x=%x%'text');if(s)new ActiveXObject('Scripting."
set "x=%x%FileSystemObject').GetStandardStream("
set "x=%x%1).Write(s);close();" 1 ^| more"
for /f "delims=" %%i in ('%x%') do set "x=%%i"
start "" %x%
endlocal
exit /b
Но с безопасностью здесь полный ахтунг, так как нельзя проверить содержание буфера.




© OSzone.net 2001-2012