Vb.net 变量不能被嵌入
我正在尝试编写一个程序,将给定的应用程序(已经完成)和自定义URL添加到桌面上的上下文菜单中 当我运行程序并选择custom时,输入所需的参数,它会创建所需的Launcher批处理脚本注册表项,但没有添加定义名称的变量givenName,文件名为“.bat”,或者没有生成第一个键(需要名称) 需要保存在批处理脚本中以启动所选URL的URL也是如此 这是发生这种情况的表单的代码:Vb.net 变量不能被嵌入,vb.net,registry,contextmenu,Vb.net,Registry,Contextmenu,我正在尝试编写一个程序,将给定的应用程序(已经完成)和自定义URL添加到桌面上的上下文菜单中 当我运行程序并选择custom时,输入所需的参数,它会创建所需的Launcher批处理脚本注册表项,但没有添加定义名称的变量givenName,文件名为“.bat”,或者没有生成第一个键(需要名称) 需要保存在批处理脚本中以启动所选URL的URL也是如此 这是发生这种情况的表单的代码: Public Class FormCustom Private Sub Button1_Click(sende
Public Class FormCustom
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Hide()
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim DirExists As Boolean = Nothing
If My.Computer.FileSystem.DirectoryExists("C:\ShortCut") Then
DirExists = True
End If
If DirExists = False Then
My.Computer.FileSystem.CreateDirectory("C:\ShortCut")
End If
Dim Position As String = Nothing
If RadioButton1.Checked Then
Position = "Middle"
Else
If RadioButton2.Checked Then
Position = "Bottom"
End If
End If
Dim givenName As String = Nothing
Dim givenURL As String = Nothing
TextBox2.Text = givenURL
TextBox1.Text = givenName
Dim sb As New System.Text.StringBuilder
sb.AppendLine("@echo off")
sb.Append("start " + givenURL)
IO.File.WriteAllText("C:\ShortCut\" + givenName + ".bat", sb.ToString())
My.Computer.Registry.ClassesRoot.CreateSubKey("DesktopBackground\Shell\" + givenName)
My.Computer.Registry.ClassesRoot.CreateSubKey("DesktopBackground\Shell\" + givenName + "\command")
My.Computer.Registry.ClassesRoot.OpenSubKey("DesktopBackground\Shell\" + givenName, True).SetValue("(Default)", "@shell32.dll")
My.Computer.Registry.ClassesRoot.OpenSubKey("DesktopBackground\Shell\" + givenName + "\command", True).SetValue("(Default)", "@shell32.dll")
My.Computer.Registry.ClassesRoot.OpenSubKey("DesktopBackground\Shell\" + givenName, True).SetValue("icon", "explorer.exe")
My.Computer.Registry.ClassesRoot.OpenSubKey("DesktopBackground\Shell\" + givenName, True).SetValue("Position", Position)
My.Computer.Registry.ClassesRoot.OpenSubKey("DesktopBackground\Shell\" + givenName + "\command", True).SetValue("(Default)", "C:\ShortCut\" + givenName + ".bat")
End Sub
End Class
我试着用“+”来添加变量,并且知道它为什么不接受它
[已解决]可在GitHub上获得:这将文本框的文本设置为变量:
TextBox2.Text = givenURL
TextBox1.Text = givenName
你想要的是另一种方式:
givenURL = TextBox2.Text
givenName = TextBox1.Text
变量的赋值方式如下:
=
例如:
Dim MyString1 As String = "1"
Dim MyString2 As String = "2"
Dim MyString3 As String = "3"
MyString1 = "Hello!" 'Sets "MyString1" to "Hello!".
MyString3 = MyString2 'Sets "MyString3" to the value of "MyString2".
MyString2 = "This is text" 'Sets "MyString2" to "This is text"
MessageBox.Show(MyString1) 'Shows: Hello!
MessageBox.Show(MyString2) 'Shows: This is text
MessageBox.Show(MyString3) 'Shows: 2
"Oh hi!" = MyString3 'Syntax error.
My.Computer.Registry.ClassesRoot.OpenSubKey("DesktopBackground\Shell\" + givenName, True).SetValue("", "@shell32.dll")
编辑: 要设置
(默认值)
注册表项的值,您只需为值名称指定一个空字符串
例如:
Dim MyString1 As String = "1"
Dim MyString2 As String = "2"
Dim MyString3 As String = "3"
MyString1 = "Hello!" 'Sets "MyString1" to "Hello!".
MyString3 = MyString2 'Sets "MyString3" to the value of "MyString2".
MyString2 = "This is text" 'Sets "MyString2" to "This is text"
MessageBox.Show(MyString1) 'Shows: Hello!
MessageBox.Show(MyString2) 'Shows: This is text
MessageBox.Show(MyString3) 'Shows: 2
"Oh hi!" = MyString3 'Syntax error.
My.Computer.Registry.ClassesRoot.OpenSubKey("DesktopBackground\Shell\" + givenName, True).SetValue("", "@shell32.dll")
请注意,SetValue
的第一个参数中没有文本:
.SetValue("", "@shell32.dll")
' ^ Empty string.
编辑2: 正如您所知,您可以使用
ElseIf
关键字在If
-语句中指定替代检查:
If RadioButton1.Checked Then
Position = "Middle"
ElseIf RadioButton2.Checked Then
Position = "Bottom"
End If
用法:
If condition1 Then
'Code...
ElseIf condition2 Then
'Code...
ElseIf condition3 Then
'Code...
ElseIf condition... Then
'Code...
End If
有关的更多信息。很抱歉让您提出了一个新问题,但在看到代码之前,我不可能知道问题就这么简单。:)没问题,但我想我发现了另一件事,我应该先解决我没有解决,它解决了它,但批处理脚本没有保存在注册表项的默认位置,而是自己创建一个批处理脚本如果它在(默认)项中(德语:(标准)),那么它就没有问题,它会像charm@Max:很高兴我能帮忙!很抱歉给您带来不便;)。祝你的项目好运!