Powershell에서 WebBrowser(CefSharp)를 실행합니다.

9684 단어 CefSharpPowerShell

개요



특히 수요는 없을지도 모르지만 Powershell에서 브라우저 표시시켜 조작할 필요가 있을지도 모른다.
하지만 표준 웹 브라우저 컨트롤이라면 IE에서 동작해 버리므로, 서포트라든지 표시의 문제라든지 필요없는 걱정을 하고 싶지 않기 때문에 IE를 사용하지 않도록 하자고 하는 이야기.
조사해 보면 그렇게 정보가 없었기 때문에 비망록으로 남겨 둡니다.

목차



· 준비
· WinForms로 이동
· WPF로 이동

준비



VisualStudio의 Nuget에서 다운로드하여 거기에서 필요한 구성 요소를 추출합니다.
적절한 WPF 응용 프로그램을 만들고 (WinForms에서 실행하려는 경우 Windows Forms 응용 프로그램 만들기) 도구> NuGet 패키지 관리자> 솔루션의 NuGet 패키지 관리를 엽니 다.

아래 패키지를 설치합니다.
(종속성으로 자동 다운로드되는 것도 있습니다)
·CefSharp.Common
・CefSharp.WinForms(WindForms로 움직일 경우)
・CefSharp.Wpf(WPF로 움직일 경우)
· cef.redist (이동하고 싶은 비트수를 설치한다)

↓의 기사를 보면 cef.redist의 모듈이 있다는 것.
h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 58006674 / 룬이 g-f f rp-in-po r r

cef.redist 모듈의 다운로드 대상 아래 폴더를 복사합니다. (64bit 버전의 경우)
C:\Users\<사용자 이름>\.nuget\packages\cef.redist.x64\<버전 번호>\CEF

복사한 폴더에 다음 파일(모듈)을 넣습니다.
C:\Users\<사용자 이름>\.nuget\packages\cefsharp.common\<버전 번호>\runtimes\win-x64\lib\netcoreapp3.0
· CefSharp.Core.dll
· CefSharp.Core.Runtime.dll
· CefSharp.dll
C:\Users\<사용자 이름>\.nuget\packages\cefsharp.common\<버전 번호>\CefSharp\x64
· CefSharp.BrowserSubprocess.Core.dll
· CefSharp.BrowserSubprocess.exe

C:\Users\<사용자 이름>\.nuget\packages\cefsharp.wpf\<버전 번호>\lib\net452
· CefSharp.Wpf.dll

C:\Users\<사용자 이름>\.nuget\packages\cefsharp.winforms\<버전 번호>\lib\net452
· CefSharp.WinForms.dll

파일을 모으면 이런 느낌이 듭니다.


이제 움직일 준비가 되었습니다.

WinForms로 이동



준비 항목에서 만든 폴더에 ps1 파일을 만들어 동작을 확인해 봅니다.
코드 참고: h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 58006674 / 룬이 g-f f rp-in-po r r
(여기에 기재된 코드만이라면 동작하지 않았기 때문에 모듈 추기해 동작하도록 하고 있습니다)
[System.Reflection.Assembly]::LoadFile("$PSScriptRoot\CefSharp.Core.dll")
[System.Reflection.Assembly]::LoadFile("$PSScriptRoot\CefSharp.Core.Runtime.dll")
[System.Reflection.Assembly]::LoadFile("$PSScriptRoot\CefSharp.WinForms.dll")
[System.Reflection.Assembly]::LoadFile("$PSScriptRoot\CefSharp.dll")

Add-Type -AssemblyName System.Windows.Forms

# WinForm Setup
$mainForm = New-Object System.Windows.Forms.Form
$mainForm.Font = "Comic Sans MS,9"
$mainForm.ForeColor = [System.Drawing.Color]::White
$mainForm.BackColor = [System.Drawing.Color]::DarkSlateBlue
$mainForm.Text = "CefSharp"
$mainForm.Width = 960
$mainForm.Height = 700

[CefSharp.WinForms.ChromiumWebBrowser] $browser = New-Object CefSharp.WinForms.ChromiumWebBrowser "www.google.com"
$mainForm.Controls.Add($browser)

[void] $mainForm.ShowDialog()


WPF로 이동



마찬가지로 준비 항목에서 만든 폴더에 ps1 파일을 만들어 동작을 확인해 봅니다.
[System.Reflection.Assembly]::LoadFile("$PSScriptRoot\CefSharp.Core.dll")
[System.Reflection.Assembly]::LoadFile("$PSScriptRoot\CefSharp.Core.Runtime.dll")
[System.Reflection.Assembly]::LoadFile("$PSScriptRoot\CefSharp.Wpf.dll")
[System.Reflection.Assembly]::LoadFile("$PSScriptRoot\CefSharp.dll")

Set-PSDebug -Strict
Add-Type -AssemblyName PresentationFramework

[xml]$xaml = @'
<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WebBrowserTest"
        xmlns:cef="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
        Title="test" Height="720" Width="1280">
    <Grid>
        <cef:ChromiumWebBrowser Address="https://www.google.co.jp" />
    </Grid>
</Window>
'@

$reader = New-Object System.Xml.XmlNodeReader $xaml
$frame = [System.Windows.Markup.XamlReader]::Load($reader)

$frame.ShowDialog()

좋은 웹페이지 즐겨찾기