Skip to content

Commit 7adc7d1

Browse files
committed
Allow setting screenres files file ending #138
Reading the screenres file ending from the registry. There is no GUI to edit this!
1 parent 1226307 commit 7adc7d1

File tree

7 files changed

+36
-10
lines changed

7 files changed

+36
-10
lines changed

b2s_screenresidentifier/b2s_screenresidentifier/formPlayfield.vb

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,26 @@ Imports System.Drawing
33
Imports System.Windows.Forms
44
Imports System.IO
55
Imports System.Windows.Forms.VisualStyles.VisualStyleElement
6+
Imports Microsoft.Win32
67

78
Public Class formPlayfield
89

910
Private formBackglass As formBackglass = Nothing
1011
Private formBackground As formBackground = Nothing
1112
Private formDMD As formDMD = Nothing
13+
Public Shared Function SafeReadRegistry(ByVal keyname As String, ByVal valuename As String, ByVal defaultvalue As String) As String
14+
' Public Property GlobalFileName As String = SafeReadRegistry("Software\B2S", "B2SScreenResFileNameOverride", "ScreenRes.txt")
15+
16+
Try
17+
Return CStr(Registry.CurrentUser.OpenSubKey(keyname).GetValue(valuename, defaultvalue))
18+
Catch ex As Exception
19+
Return defaultvalue
20+
End Try
21+
End Function
1222

1323
Private Sub formPlayfield_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
24+
Dim B2SResFileEnding As String = SafeReadRegistry("Software\B2S", "B2SResFileEndingOverride", ".res")
25+
1426
formDMD = New formDMD
1527
formDMD.formBackglass = formBackglass
1628

@@ -25,8 +37,8 @@ Public Class formPlayfield
2537
' If started from B2SBackglassServer either directly (PureEXE=true) or as backglass through VPX (false) or from explorer PureEXE = Nothing
2638
If My.Application.CommandLineArgs.Count > 1 Then PureEXE = My.Application.CommandLineArgs.ElementAt(1).Equals("-pureexe=true")
2739
' In case a Table or backglass file is thrown on the executable
28-
If Not Path.GetExtension(FileName).ToLower().Equals(".res") And Not Path.GetExtension(FileName).ToLower().Equals(".txt") And Not FileName.ToLower().Equals(GlobalFileName.ToLower()) Then
29-
FileName = Path.ChangeExtension(FileName, ".res")
40+
If Not Path.GetExtension(FileName).ToLower().Equals(B2SResFileEnding) And Not Path.GetExtension(FileName).ToLower().Equals(".txt") And Not FileName.ToLower().Equals(GlobalFileName.ToLower()) Then
41+
FileName = Path.ChangeExtension(FileName, B2SResFileEnding)
3042
End If
3143

3244
If File.Exists(FileName) Then

b2sbackglassserver/b2sbackglassserver/B2SInit.cmd

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
@echo off
22
echo %0 %* > "%~dp0B2SWindowPunch.log"
33
setlocal EnableDelayedExpansion
4+
set B2SResFileEndingOverride=.res
5+
for /f "tokens=3" %%a in ('reg query "HKCU\Software\B2S" /V B2SResFileEndingOverride ^|findstr /ri "REG_SZ"') do set B2SResFileEndingOverride=%%a
46

5-
set "resfile=%cd%\%~1.res"
7+
set "resfile=%cd%\%~1%B2SResFileEndingOverride%"
68
set "GameName=%~2"
79

810
REM If started from explorer, quit

b2sbackglassserver/b2sbackglassserver/Classes/B2SScreen.vb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ Public Class B2SScreen
105105
debugLog.WriteLogEntry("B2SScreen.ReadB2SSettingsFromFile Start Search ScreenRes")
106106

107107
Try
108-
Dim loadFileNames() As String = {IO.Path.Combine(B2SData.TableFileName & ".res"), ' .\TableName.res
108+
Dim loadFileNames() As String = {IO.Path.Combine(B2SData.TableFileName & B2SSettings.B2SResFileEnding), ' .\TableName.res
109109
IO.Path.Combine(B2SData.TableFileName, B2SSettings.B2SScreenResFileName), ' .\TableName\ScreenRes.txt
110110
B2SSettings.B2SScreenResFileName, ' .\ScreenRes.txt
111111
IO.Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), B2SSettings.B2SScreenResFileName)' B2SFolder\ScreenRes.txt

b2sbackglassserver/b2sbackglassserver/Classes/B2SSettings.vb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ Public Class B2SSettings
4040

4141
Private Const settingsFilename As String = "B2STableSettings.xml"
4242
Public Shared Property B2SScreenResFileName As String = SafeReadRegistry("Software\B2S", "B2SScreenResFileNameOverride", "ScreenRes.txt")
43+
Public Shared Property B2SResFileEnding As String = SafeReadRegistry("Software\B2S", "B2SResFileEndingOverride", ".res")
4344
Public Shared Property B2STableSettingsExtendedPath() As Boolean = SafeReadRegistry("Software\B2S", "B2STableSettingsExtendedPath", "0") = "1"
4445
Public Shared Property B2SWindowPunchActive() As Boolean = SafeReadRegistry("Software\B2S", "B2SWindowPunchActive", "0") = "1"
4546
Public Shared Property B2SDebugLog() As Boolean = SafeReadRegistry("Software\B2S", "B2SDebugLog", "0") = "1"

b2sbackglassserver/b2sbackglassserver/Forms/formSettings.vb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ Public Class formSettings
498498
Dim B2S_Identifier As String = IO.Path.Combine(Application.StartupPath, "B2S_ScreenResIdentifier.exe")
499499
#End If
500500
If IO.File.Exists(B2S_Identifier) Then
501-
pi.Arguments = """" & B2SData.TableFileName & ".res" & """"
501+
pi.Arguments = """" & B2SData.TableFileName & B2SSettings.B2SResFileEnding & """"
502502
pi.FileName = B2S_Identifier
503503

504504
p.StartInfo = pi
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
@echo off
22
set "restemplate=%~1"
3-
set "resfile=%~dpn2.res"
3+
set B2SResFileEndingOverride=.res
4+
for /f "tokens=3" %%a in ('reg query "HKCU\Software\B2S" /V B2SResFileEndingOverride ^|findstr /ri "REG_SZ"') do set B2SResFileEndingOverride=%%a
5+
6+
set "resfile=%~dpn2%B2SResFileEndingOverride%"
47

58
copy "%~dp0%restemplate%" "%resfile%"

b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/formBackglassServerRegApp.vb

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,15 @@ Imports System.IO
33
Imports System.Security.Principal
44

55
Public Class formBackglassServerRegApp
6+
Public Shared Function SafeReadRegistry(ByVal keyname As String, ByVal valuename As String, ByVal defaultvalue As String) As String
7+
' Public Property GlobalFileName As String = SafeReadRegistry("Software\B2S", "B2SScreenResFileNameOverride", "ScreenRes.txt")
68

9+
Try
10+
Return CStr(Registry.CurrentUser.OpenSubKey(keyname).GetValue(valuename, defaultvalue))
11+
Catch ex As Exception
12+
Return defaultvalue
13+
End Try
14+
End Function
715

816
Private Sub Form1_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
917
If Not IsAdmin() Then
@@ -117,7 +125,7 @@ Public Class formBackglassServerRegApp
117125

118126
If CommandSilent Or (dialogResult = DialogResult.Yes) Or (dialogResult = DialogResult.No) Then
119127
Dim rkReg As RegistryKey = Registry.ClassesRoot
120-
128+
Dim B2SResFileEnding As String = SafeReadRegistry("Software\B2S", "B2SResFileEndingOverride", ".res")
121129

122130
' Clean old registry for the ScreenRes path and only if Yes is choosen it is regenerated.
123131

@@ -129,7 +137,7 @@ Public Class formBackglassServerRegApp
129137
rkReg.DeleteSubKeyTree("b2sserver.directb2s\shell", False)
130138
End If
131139

132-
rkReg.DeleteSubKeyTree(".res", False) ' Do not delete this one?
140+
rkReg.DeleteSubKeyTree(B2SResFileEnding, False) ' Do not delete this one?
133141
rkReg.DeleteSubKeyTree("b2sserver.res", False)
134142

135143
Using sysFileKey As RegistryKey = rkReg.OpenSubKey("SystemFileAssociations", True)
@@ -151,7 +159,7 @@ Public Class formBackglassServerRegApp
151159
End Using
152160

153161
' Add res file context menu for double click and right click -> Edit ScreenRes file
154-
rkReg.CreateSubKey(".res").SetValue("", "b2sserver.res")
162+
rkReg.CreateSubKey(B2SResFileEnding).SetValue("", "b2sserver.res")
155163
' Add New -> B2S Server ScreenRes file (new).res Context menu
156164
rkReg.CreateSubKey(".res\b2sserver.res\ShellNew").SetValue("Command", """" & IO.Path.Combine(Path.GetDirectoryName(Application.ExecutablePath()), "B2S_ScreenResIdentifier.exe") & """ ""%1""")
157165
Using resReg As RegistryKey = rkReg.CreateSubKey("b2sserver.res")
@@ -160,7 +168,7 @@ Public Class formBackglassServerRegApp
160168
End Using
161169

162170
If Directory.Exists("ScreenResTemplates") Then
163-
Dim sFiles() As String = Directory.GetFiles("ScreenResTemplates", "*.res")
171+
Dim sFiles() As String = Directory.GetFiles("ScreenResTemplates", "*" + B2SResFileEnding)
164172
'And then add it in a Label in the way you want
165173
If sFiles.Length > 0 Then
166174
Using b2stoolstoplevel As RegistryKey = sysFileKey.CreateSubKey(".directb2s\shell\B2SServer")

0 commit comments

Comments
 (0)