トップ回答者
vb2015で.wmvファイルを起動させるスクリーンセーバーは作れますか?

質問
-
vb2015で.wmvファイルを起動させるスクリーンセーバーは作れますか?
人から「.wmvのムービーをスクリーンセーバーで流したい」と相談を受けました。
調べたところ、
スクリーンセーバーの条件は
『C:\Windows\System32』に置かれた『.scr』ファイル
という事らしいです。
その『.scr』ファイルは実は中身は『.exe』ファイルで、一旦『.exe』を作った後に名前を変えているだけという情報が出てきました。
『.exe』なので、なんでも動かせるので、うかつなところからスクリーンセーバーをダウンロードしてはいけないらしいです。
なるほど、『.exe』であれば、vb2015で作った後に、拡張子を『.scr』に変更すればよいのですよね?
<質問>
vb2015で.wmvファイルを起動させるスクリーンセーバーは作れますか?
なんか出来そうな気がします。仮にできるとします。
C:\Users\user1\Videos\testmv.wmvというムービーがあるとします。
これを起動する為だけのアプリ『testmv.exe』をつくり、『testmv.scr』にリネームし、『C:\Windows\System32』に置くとします。
これをvb2015で作るとすれば何アプリケーションのスタイルで
WindowsApplication?
ConsoleApplication?
どのように作ればよいでしょうか?
回答
-
WindowsApplicationでも、ConsoleApplicationでもなく、WpfApplicationですか。
一番知らない分野です。
VBにもWpfApplicationをつくる入口は用意されていますが、VBだと無理なのでしょうか?
VBでWPFアプリケーションを作成することは可能です。
WPFでC#、かつスクリーンセーバー関連だったのでおっしゃる通り安易にご紹介したくなく、そのWPFアプリケーションのダウンロード先をご紹介しませんでしたが、危険を十分にご存知だと思いましたので、以下にご紹介しておきます。
VS2015 WPF C#のプロジェクトですので、どのように作成するのか参考になると思います。もし、ダウンロードされるのであれば、実行形式の直接のダウンロードではなく、sourceforgeからプロジェクトをダウンロードされると良いと思います。How to load a video as a screensaver on Windows 10
https://superuser.com/questions/1011584/how-to-load-a-video-as-a-screensaver-on-windows-10WPFと言ってもMVVMというデザインパターンに捕らわれなければ、Windowsフォームアプリケーションと同様にイベントドリブンで作成することができますので、思ったより簡単と思われるかもしれません。
こちらでも最初調べ、
ムービースクリーンセーバーDX.scr
というのを試してみました。
私もこれを調べました。お役に立てませんでしたね。m(_ _)m
スクリーンセーバーは危険なファイルなので、
ベクターや窓の杜といった一定の信頼があるところから以外はダウンロードするなとよく書かれています。
・『.wmv』ファイルが再生できる
・マルチスクリーンのクローン画面でも動く
・Windows10 pro 64bitで動作する
・信頼できるサイトからダウンロードできる
という条件を満たせるスクリーンセーバーがあれば是非紹介頂きたいです。
私の方で上記のWPFアプリケーションを試してみましたが、1番目と3番目は満たしていました。2番目は環境が無いので試せていません。4番目はプロジェクトをコンパイルして作成しました。ご判断におまかせします。
なおこのWPFアプリケーションですが、動画ファイルの場所等をレジストリに保存しますのでご注意下さい。
#ソースを読めばわかりますし、アプリケーションの説明にも書かれています。(追記)
sourceforgeに関してはいろいろありました・・・
★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
- 編集済み trapemiyaModerator 2017年6月28日 4:44 追記
- 回答としてマーク custardpudding 2017年6月28日 7:37
-
ソースを読むと、上下のキー、もしくはボリュームアップ、ボリュームダウンのキー、もしくはマウスのホイールでボリュームが変えられそうです。
(追記)
ちなみにこの設定値もレジストリに保存されるようです。
★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
- 編集済み trapemiyaModerator 2017年6月28日 7:02 追記
- 回答としてマーク custardpudding 2017年6月28日 7:37
すべての返信
-
こんにちは。
以下を見るに同じ手順で作成できるのではないでしょうか。(少し情報が古いですが)
https://support.microsoft.com/ja-jp/help/818359/how-to-create-a-screen-saver-by-using-visual-basic-net-or-visual-basic
GUIを有するアプリケーションをフルスクリーン表示させる設定をしているだけのようですので、
まずはWindowsApplicationで試してみては如何でしょう。- 編集済み いわさ Tak1waMVP, Moderator 2017年6月28日 0:56
-
<質問>
vb2015で.wmvファイルを起動させるスクリーンセーバーは作れますか?
作れます。
これをvb2015で作るとすれば何アプリケーションのスタイルで
Windowsフォームアプリケーションで全画面表示で動画を再生するようにし、Windowsから渡されるいくつかの引数に対応するようにし、完成したexeをscrに変更するだけです。
WindowsApplication?
ConsoleApplication?
どのように作ればよいでしょうか?
ただ、Windowsフォームアプリケーションだと動画を再生する方法がDirectShowあたりになると思うのですが、ちょっとやっかいですね。ちなみにWPFでC#になりますが、動画を再生するスクリーンセーバーのサンプルコードがネット上にありました。WPFだと動画の再生は簡単です。ところでスクリーンセーバーにwmvを使いたいだけであればフリーソフトもありますし、上記のWPFアプリケーションをご紹介しても良いかもしれませんね。
★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
- 編集済み trapemiyaModerator 2017年6月28日 3:05 追記
- 回答の候補に設定 立花楓Microsoft employee, Moderator 2017年6月28日 4:24
-
その通りやってみましたけど、上手くいきませんでした。
フォームを2つとモジュールファイルを作れという話ですが、
それぞれのフォームでエラーが出ます。
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー BC30260 'components' は、この class で 'Private components As IContainer' として既に宣言されています。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmcnfg.Designer.vb 18 アクティブ
エラー BC30269 'Protected Overrides Sub Dispose(disposing As Boolean)' には同じ署名で複数の定義が存在します。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmcnfg.vb 18 アクティブ
エラー BC30269 'Private Sub InitializeComponent()' には同じ署名で複数の定義が存在します。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmcnfg.vb 37 アクティブ
エラー BC30260 'components' は、この class で 'Private components As IContainer' として既に宣言されています。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.Designer.vb 18 アクティブ
エラー BC30269 'Protected Overrides Sub Dispose(disposing As Boolean)' には同じ署名で複数の定義が存在します。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.vb 20 アクティブ
エラー BC30269 'Private Sub InitializeComponent()' には同じ署名で複数の定義が存在します。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.vb 31 アクティブ
エラー BC31429 class 'frmcnfg' に同じ名前のメンバーが多種類存在するため、'components' があいまいです。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmcnfg.Designer.vb 9 アクティブ
エラー BC31429 class 'frmcnfg' に同じ名前のメンバーが多種類存在するため、'components' があいまいです。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmcnfg.Designer.vb 10 アクティブ
エラー BC30521 これらの引数に最も固有な、アクセス可能な 'InitializeComponent' がないため、オーバーロードの解決に失敗しました:
'Private Sub InitializeComponent()': 最も固有ではありません。
'Private Sub InitializeComponent()': 最も固有ではありません。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmcnfg.vb 11 アクティブ
エラー BC31429 class 'frmcnfg' に同じ名前のメンバーが多種類存在するため、'components' があいまいです。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmcnfg.vb 20 アクティブ
エラー BC31429 class 'frmcnfg' に同じ名前のメンバーが多種類存在するため、'components' があいまいです。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmcnfg.vb 21 アクティブ
エラー BC31429 class 'frmscr' に同じ名前のメンバーが多種類存在するため、'components' があいまいです。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.Designer.vb 9 アクティブ
エラー BC31429 class 'frmscr' に同じ名前のメンバーが多種類存在するため、'components' があいまいです。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.Designer.vb 10 アクティブ
エラー BC30521 これらの引数に最も固有な、アクセス可能な 'InitializeComponent' がないため、オーバーロードの解決に失敗しました:
'Private Sub InitializeComponent()': 最も固有ではありません。
'Private Sub InitializeComponent()': 最も固有ではありません。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.vb 13 アクティブ
エラー BC31429 class 'frmscr' に同じ名前のメンバーが多種類存在するため、'components' があいまいです。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.vb 22 アクティブ
エラー BC31429 class 'frmscr' に同じ名前のメンバーが多種類存在するため、'components' があいまいです。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.vb 23 アクティブ
エラー BC31429 class 'frmscr' に同じ名前のメンバーが多種類存在するため、'components' があいまいです。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.vb 32 アクティブ
エラー BC31429 class 'frmscr' に同じ名前のメンバーが多種類存在するため、'components' があいまいです。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.vb 34 アクティブ
警告 BC42025 共有メンバー、定数メンバー、列挙型メンバー、または入れ子にされた型にインスタンス経由でアクセスしています。正規の式は評価されません。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.vb 88 アクティブ
警告 BC42025 共有メンバー、定数メンバー、列挙型メンバー、または入れ子にされた型にインスタンス経由でアクセスしています。正規の式は評価されません。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.vb 88 アクティブ
警告 BC42025 共有メンバー、定数メンバー、列挙型メンバー、または入れ子にされた型にインスタンス経由でアクセスしています。正規の式は評価されません。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.vb 106 アクティブ
警告 BC42025 共有メンバー、定数メンバー、列挙型メンバー、または入れ子にされた型にインスタンス経由でアクセスしています。正規の式は評価されません。 WindowsApplication6 c:\users\user1\documents\visual studio 2015\Projects\WindowsApplication6\WindowsApplication6\frmscr.vb 106 アクティブ
■frmscr.vb■
Imports Microsoft.Win32
Imports Microsoft.VisualBasic
Imports System.Math
Public Class frmscr
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'The Windows Form Designer requires this call.
InitializeComponent()
'Add any initialization after the InitializeComponent() call.
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer.
Private components As System.ComponentModel.IContainer
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container
Me.lblMessage = New System.Windows.Forms.Label
Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
Me.SuspendLayout()
'
'lblMessage
'
Me.lblMessage.AutoSize = True
Me.lblMessage.BackColor = System.Drawing.Color.Black
Me.lblMessage.ForeColor = System.Drawing.Color.Yellow
Me.lblMessage.Location = New System.Drawing.Point(72, 118)
Me.lblMessage.Name = "lblMessage"
Me.lblMessage.Size = New System.Drawing.Size(193, 36)
Me.lblMessage.TabIndex = 1
Me.lblMessage.Text = "screen saver"
Me.lblMessage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'Timer1
'
Me.Timer1.Enabled = True
'
'frmscr
'
Me.AutoScaleBaseSize = New System.Drawing.Size(15, 33)
Me.BackColor = System.Drawing.Color.Black
Me.ClientSize = New System.Drawing.Size(292, 273)
Me.ControlBox = False
Me.Controls.Add(Me.lblMessage)
Me.Font = New System.Drawing.Font("Microsoft Sans Serif", 21.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "frmscr"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.TopMost = True
Me.WindowState = System.Windows.Forms.FormWindowState.Maximized
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub frmscr_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim tmpLng As Integer
tmpLng = SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1&, 0&, 0&)
'Get the user's previous preference for the marquee message.
Dim pRegKey As RegistryKey = Registry.CurrentUser
pRegKey = pRegKey.OpenSubKey("Software\\Test Screen Saver")
Dim val As Object = pRegKey.GetValue("Message")
pRegKey.Close()
lblMessage.Text = val.ToString
'Make the cursor disappear.
Me.Cursor.Current.Hide()
End Sub
Private Sub frmscr_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
'Immediately end when any key is pressed.
Me.Close()
End Sub
Private Sub frmscr_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated
'Center the lblMessage label to the form.
lblMessage.Left = GetScaleWidth(Me)
lblMessage.Top = (GetScaleWidth(Me) - lblMessage.Height) / 3
End Sub
Private Sub frmscr_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
'System.Windows.Forms.Cursor.Current.Show
''Restore the mouse cursor.
Dim tmplng As Integer
Me.Cursor.Current.Show()
tmplng = SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0&, 0&, 0&)
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'Determine whether the Message has moved completely off the left side of the screen.
If lblMessage.Left < (0 - lblMessage.Width) Then
lblMessage.Left = GetScaleWidth(Me) 'ScaleWidth
End If
'Moves lblMessage to the left.
lblMessage.Left = lblMessage.Left - 10
End Sub
Private Sub frmscr_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
Static OldX As Integer
Static OldY As Integer
'Determines whether the mouse was moved and whether the movement was large.
'if so, the screen saver is ended.
If (OldX > 0 And OldY > 0) And (Abs(e.X - OldX) > 3 Or Abs(e.Y - OldY) > 3) Then
Me.Close()
End If
'Assigns the current X and Y locations to OldX and OldY.
OldX = e.X
OldY = e.Y
End Sub
End Class
■frmscr.vb■
■frmcnfg.vb■
Imports Microsoft.Win32
Public Class frmcnfg
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'The Windows Form Designer requires this call.
InitializeComponent()
'Add any initialization after the InitializeComponent() call.
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer.
Private components As System.ComponentModel.IContainer
'NOTE: The Windows Form Designer requires the following procedure.
'It can be modified by using the Windows Form Designer.
'Do not modify the procedure by using the Code editor.
Friend WithEvents txtmessage As System.Windows.Forms.TextBox
Friend WithEvents cmdcancel As System.Windows.Forms.Button
Friend WithEvents cmdOk As System.Windows.Forms.Button
Friend WithEvents label1 As System.Windows.Forms.Label
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.cmdOk = New System.Windows.Forms.Button
Me.cmdcancel = New System.Windows.Forms.Button
Me.label1 = New System.Windows.Forms.Label
Me.txtmessage = New System.Windows.Forms.TextBox
Me.SuspendLayout()
'
'cmdOk
'
Me.cmdOk.Location = New System.Drawing.Point(200, 184)
Me.cmdOk.Name = "cmdOk"
Me.cmdOk.Size = New System.Drawing.Size(56, 24)
Me.cmdOk.TabIndex = 0
Me.cmdOk.Text = "&OK"
'
'cmdcancel
'
Me.cmdcancel.Location = New System.Drawing.Point(272, 184)
Me.cmdcancel.Name = "cmdcancel"
Me.cmdcancel.Size = New System.Drawing.Size(56, 24)
Me.cmdcancel.TabIndex = 1
Me.cmdcancel.Text = "&Cancel"
'
'label1
'
Me.label1.Location = New System.Drawing.Point(24, 40)
Me.label1.Name = "label1"
Me.label1.Size = New System.Drawing.Size(152, 24)
Me.label1.TabIndex = 2
Me.label1.Text = "Enter Message"
'
'txtmessage
'
Me.txtmessage.Location = New System.Drawing.Point(32, 64)
Me.txtmessage.Multiline = True
Me.txtmessage.Name = "txtmessage"
Me.txtmessage.Size = New System.Drawing.Size(296, 96)
Me.txtmessage.TabIndex = 3
Me.txtmessage.Text = ""
'
'frmcnfg
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(344, 221)
Me.Controls.Add(Me.txtmessage)
Me.Controls.Add(Me.label1)
Me.Controls.Add(Me.cmdcancel)
Me.Controls.Add(Me.cmdOk)
Me.Name = "frmcnfg"
Me.Text = "CONFIGURATION"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub cmdcancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdcancel.Click
Me.Close()
End Sub
Private Sub cmdOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOk.Click
'Save the current settings to
'HKEY_CURRENT_USER\Software\
'in the registry.
Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey("Software", True)
Dim newkey As RegistryKey = key.CreateSubKey("Test Screen Saver")
newkey.SetValue("Message", txtmessage.Text)
newkey.Close()
Me.Close()
End Sub
End Class
■frmcnfg.vb■
■Module1.vb■
Imports System.Runtime.InteropServices
Imports System.Environment
Module Module1
Public Declare Auto Function SystemParametersInfo Lib "user32" (ByVal uAction As Integer, ByVal uParam As Integer, ByRef pvParam As Integer, ByVal fuWinIni As Integer) As Boolean
Public Const SPI_SCREENSAVERRUNNING = 97&
Public Const frmedge As Integer = 4
Public nMouseMoves&
Dim sStartType
Public Sub Main(ByVal args As String())
Dim Inst As Boolean = False
If args.Length > 0 Then
sStartType = args(0).ToLower.Trim().Substring(0, 2)
If sStartType = "" Then
'This will occur when a user right-clicks the .SCR
'file and chooses "configure"
sStartType = "/c"
End If
' Determine whether the screen saver should show user-definable options.
If sStartType = "/c" Then
Dim usercnfg As New frmcnfg
usercnfg.ShowDialog()
' Exit the application.
Exit Sub
End If
' Determine whether the screen saver should just execute.
If sStartType = "/s" Then
'Check for previous instance.
Inst = PrevInstance()
If Not (Inst) Then
' Create a Screen Saver form and display the form.
Dim scrsvr As New frmscr
scrsvr.ShowDialog()
Else
'If a previous instance exists, exit the application.
Exit Sub
End If
End If
End If
End Sub
Function PrevInstance() As Boolean
If UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then
Return True
Else
Return False
End If
End Function
Public Function GetScaleWidth(ByVal frm As Form) As Integer
Dim ctl As Control
Dim w As Integer = frm.ClientSize.Width
For Each ctl In frm.Controls
With ctl
If .GetContainerControl() Is frm Then
If .Dock = DockStyle.Left Or .Dock = DockStyle.Right Then
w = w - .Size.Width
End If
End If
End With
Next
GetScaleWidth = w - frmedge
End Function
End Module
■Module1.vb■ -
有難うございます。
> ただ、Windowsフォームアプリケーションだと動画を再生する方法がDirectShowあたりになると思うのですが、ちょっとやっかいですね。
> ちなみにWPFでC#になりますが、動画を再生するスクリーンセーバーのサンプルコードがネット上にありました。WPFだと動画の再生は簡単です。
WindowsApplicationでも、ConsoleApplicationでもなく、WpfApplicationですか。
一番知らない分野です。
VBにもWpfApplicationをつくる入口は用意されていますが、VBだと無理なのでしょうか?
C#でも、ファイル名やパスを変えるだけで動くサンプルなら大丈夫ですが。
> ところでスクリーンセーバーにwmvを使いたいだけであればフリーソフトもありますし、上記のWPFアプリケーションをご紹介しても良いかもしれませんね。
フリーソフトの紹介も歓迎します。
こちらでも最初調べ、
ムービースクリーンセーバーDX.scr
というのを試してみました。
これで動くのは動いたのですが、マルチスクリーンでクローンした環境では、
メイン画面では動くのですが、サブ画面が黒画面になってしまって使いものにならないと言われました。
動作OS:Windows XP/Me/98なので、Windows10で動いただけマシですが。
条件の後付けで申し訳ないですが、
マルチスクリーンでクローン側もメインと同じようにスクリーンセーバーが動くものがあれば有難いです。
スクリーンセーバーは危険なファイルなので、
ベクターや窓の杜といった一定の信頼があるところから以外はダウンロードするなとよく書かれています。
・『.wmv』ファイルが再生できる
・マルチスクリーンのクローン画面でも動く
・Windows10 pro 64bitで動作する
・信頼できるサイトからダウンロードできる
という条件を満たせるスクリーンセーバーがあれば是非紹介頂きたいです。 -
WindowsApplicationでも、ConsoleApplicationでもなく、WpfApplicationですか。
一番知らない分野です。
VBにもWpfApplicationをつくる入口は用意されていますが、VBだと無理なのでしょうか?
VBでWPFアプリケーションを作成することは可能です。
WPFでC#、かつスクリーンセーバー関連だったのでおっしゃる通り安易にご紹介したくなく、そのWPFアプリケーションのダウンロード先をご紹介しませんでしたが、危険を十分にご存知だと思いましたので、以下にご紹介しておきます。
VS2015 WPF C#のプロジェクトですので、どのように作成するのか参考になると思います。もし、ダウンロードされるのであれば、実行形式の直接のダウンロードではなく、sourceforgeからプロジェクトをダウンロードされると良いと思います。How to load a video as a screensaver on Windows 10
https://superuser.com/questions/1011584/how-to-load-a-video-as-a-screensaver-on-windows-10WPFと言ってもMVVMというデザインパターンに捕らわれなければ、Windowsフォームアプリケーションと同様にイベントドリブンで作成することができますので、思ったより簡単と思われるかもしれません。
こちらでも最初調べ、
ムービースクリーンセーバーDX.scr
というのを試してみました。
私もこれを調べました。お役に立てませんでしたね。m(_ _)m
スクリーンセーバーは危険なファイルなので、
ベクターや窓の杜といった一定の信頼があるところから以外はダウンロードするなとよく書かれています。
・『.wmv』ファイルが再生できる
・マルチスクリーンのクローン画面でも動く
・Windows10 pro 64bitで動作する
・信頼できるサイトからダウンロードできる
という条件を満たせるスクリーンセーバーがあれば是非紹介頂きたいです。
私の方で上記のWPFアプリケーションを試してみましたが、1番目と3番目は満たしていました。2番目は環境が無いので試せていません。4番目はプロジェクトをコンパイルして作成しました。ご判断におまかせします。
なおこのWPFアプリケーションですが、動画ファイルの場所等をレジストリに保存しますのでご注意下さい。
#ソースを読めばわかりますし、アプリケーションの説明にも書かれています。(追記)
sourceforgeに関してはいろいろありました・・・
★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
- 編集済み trapemiyaModerator 2017年6月28日 4:44 追記
- 回答としてマーク custardpudding 2017年6月28日 7:37
-
ソースを読むと、上下のキー、もしくはボリュームアップ、ボリュームダウンのキー、もしくはマウスのホイールでボリュームが変えられそうです。
(追記)
ちなみにこの設定値もレジストリに保存されるようです。
★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
- 編集済み trapemiyaModerator 2017年6月28日 7:02 追記
- 回答としてマーク custardpudding 2017年6月28日 7:37
-
有難うございます。
出来ました。
デュアルでの動作確認もできました。
音量調整ですが、
スクリーンセーバーを起動中、もしくはプレビューの時にしか確認できないのですが、
でも、スクリーンセーバーはマウスやキーボードを触れば消えるのが仕様です。
どうしたものかと思いましたが、
↑↓キーを触っても、マウスを動かさないように慎重にスクロールだけさせても、
スクリーンセーバーは解除されませんでした。
ここが、通常のスクリーンセイバーと異なるところですね。
普通のスクリーンセーバーは↑↓キーで解除されますから。
でも、利用上、特に支障がないので、要件は達成できました。
感謝いたします。