Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   воспроизвести ссылку на медиафайл в буфере обмена (http://forum.oszone.net/showthread.php?t=322671)

neebet01 12-01-2017 07:04 2702824

воспроизвести ссылку на медиафайл в буфере обмена
 
Стоит задача как можно быстрее воспроизвести файл по ссылке в буфере обмена. Как реализовать?

greg zakharov 12-01-2017 10:04 2702842

Допустим в буфере есть некая ссылка. В случае с 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

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


Время: 22:54.

Время: 22:54.
© OSzone.net 2001-