2017-04-21 1 views
0

Je suis en train d'écrire un programm qui ajoute donné Apps (déjà fait) et des URL personnalisées dans le menu contextuel sur le bureauLes variables ne peuvent pas s'intégrés

Quand je lance le Programme et choisissez personnalisé, entrez les paramètres nécessaires, il crée le script Launcher Batch nécessaire à la clé de registre mais la variable givenName qui définit le nom n'a pas été ajoutée et les fichiers sont appelés ".bat" ou la première clé n'est pas générée (ce qui nécessite le nom).

même se passe avec l'URL qui doit être enregistré dans le script batch pour lancer l'URL choisie

Voici le code pour le formulaire où cela se produit:

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 

I essayé d'ajouter la variable avec un « + » et savoir pourquoi il sait vraiment ne marche pas accepter

[RESOLU] Availible sur GitHub: https://github.com/amir00t/LvL-up

Répondre

0

Cette définit le texte zones de texte de à vos variables:

TextBox2.Text = givenURL 
TextBox1.Text = givenName 

Vous voulez l'inverse:

givenURL = TextBox2.Text 
givenName = TextBox1.Text 

Les variables sont attribués comme suit:

<variable to set> = <value to give the variable> 

Pour exemple:

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. 

EDIT:

Pour définir la valeur de la clé de Registre (Default) tu suffit de spécifier une chaîne vide pour le nom de la valeur.

Par exemple:

My.Computer.Registry.ClassesRoot.OpenSubKey("DesktopBackground\Shell\" + givenName, True).SetValue("", "@shell32.dll") 

Remarquez qu'il n'y a pas de texte dans le premier paramètre de SetValue:

.SetValue("", "@shell32.dll") 
'  ^Empty string. 

EDIT 2:

Juste pour que vous le savez, il y a le ElseIf mots clés que vous pouvez utiliser pour spécifier un contrôle alternatif dans votre If -Déclaration:

If RadioButton1.Checked Then 
    Position = "Middle" 
ElseIf RadioButton2.Checked Then 
    Position = "Bottom" 
End If 

Utilisation:

If condition1 Then 
    'Code... 
ElseIf condition2 Then 
    'Code... 
ElseIf condition3 Then 
    'Code... 
ElseIf condition... Then 
    'Code... 
End If 

Plus d'informations sur le MSDN.

+0

Désolé de vous avoir fait poser une nouvelle question, mais avant de voir le code, je ne pouvais pas savoir que le problème était aussi simple.:) –

+0

aucun problème mais je pense que j'ai trouvé une autre chose que je devrais corriger d'abord – Max

+0

je didnt et il a corrigé mais le script de lot ne pas être enregistré dans l'emplacement par défaut de la clé de registre au lieu de son propre un – Max