|
■No86140 (まなみ さん) に返信 > アプリケーション ウィンドウの大きさを指定する事は出来ないのでしょうか?
「前回のウィンドウ終了位置」をどこで管理しているのかが特定できれば、 No86114 の方法でいけるかな…と仮説を立てては見たのですが、今のところ、 下記のコードでも期待動作までは持ち込めていません。
Public Sub RunPhotoViwer(imageFile As FileInfo, rect As Rectangle, ByVal maxmized As Boolean, Optional ByVal backgroundColor As Color = Nothing) Dim bin As Byte() = _ BitConverter.GetBytes(rect.Left).Concat( _ BitConverter.GetBytes(rect.Right)).Concat( _ BitConverter.GetBytes(rect.Top)).Concat( _ BitConverter.GetBytes(rect.Bottom)).Concat( _ New Byte() {If(maxmized, 1, 0), 0, 0, 0}).ToArray() Debug.WriteLine(BitConverter.ToString(bin))
Const keyViewer As String = "Software\Microsoft\Windows Photo Viewer\Viewer" Microsoft.Win32.Registry.SetValue("HKEY_CURRENT_USER\" & keyViewer, "MainWndPos", bin) If backgroundColor = Color.Empty Then Dim key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(keyViewer, True) If key IsNot Nothing AndAlso key.GetValue("BackgroundColor", Nothing) IsNot Nothing Then key.DeleteValue("BackgroundColor") key.Close() End If Else Dim c As Integer = Color.FromArgb(&HFF, backgroundColor).ToArgb() Microsoft.Win32.Registry.SetValue("HKEY_CURRENT_USER\" & keyViewer, "BackgroundColor", c) End If
Const dllPathWithQuote As String = """C:\Program Files (x86)\Windows Photo Viewer\PhotoViewer.dll""" Dim filePathWithoutQuote As String = imageFile.FullName Process.Start("rundll32.exe", dllPathWithQuote & ",ImageView_Fullscreen " & filePathWithoutQuote) End Sub
|