Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Допустим в буфере есть некая ссылка. В случае с 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
Но с безопасностью здесь полный ахтунг, так как нельзя проверить содержание буфера.

Отправлено: 10:04, 12-01-2017 | #2