Avatar billede marvind Nybegynder
28. februar 2008 - 23:04 Der er 10 kommentarer og
1 løsning

fil placering med en ekstra skråstreg

jeg har følgene kode:

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CheckForExistingInstance()

        'hide the program from taskbar and make it invisible
        Me.Visible = True
        Me.ShowInTaskbar = False

        'make the program execute on startup
        Dim path
        path = App_Path()
        Dim Startup_key As String
        Startup_key = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run"
        Dim Reg As Object
        Reg = CreateObject("wscript.shell")
        Reg.RegWrite(Startup_key & "winmx32", path & "\" & "winmx32" & ".exe")

    End Sub
    Public Sub CheckForExistingInstance()
        'check for existing instances of this program, if any is found, close this one.
        If Process.GetProcessesByName _
          (Process.GetCurrentProcess.ProcessName).Length > 1 Then
            Application.Exit()
        End If
    End Sub


når programmet starter skal den lægge en streng ind i HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
med programmets filplacering og navn, (i dette tilfælde: C:\Users\Martin Tandrup\Desktop\jumpscar\winmx32\bin\Debug\\winmx32.exe)
hvor kommer den ekstra \ efter debug fra?

er der en bedre måde end:
Startup_key & "winmx32", path & "\" & "winmx32" & ".exe" at skrive placering på?
Avatar billede arne_v Ekspert
28. februar 2008 - 23:13 #1
Path.Combine er vel 0.02% bedre end end & til at kombinere sti og navn.
Avatar billede arne_v Ekspert
28. februar 2008 - 23:14 #2
Hvordan henter App_Path() stien ?
Avatar billede marvind Nybegynder
28. februar 2008 - 23:49 #3
Public Function App_Path() As String
        Return System.AppDomain.CurrentDomain.BaseDirectory()
    End Function

nu vil jeg gå i seng, godnat
Avatar billede arne_v Ekspert
29. februar 2008 - 01:49 #4
System.AppDomain.CurrentDomain.BaseDirectory returnerer en streng med \ til sidst og det
er derfor du får dobbelt \
Avatar billede marvind Nybegynder
29. februar 2008 - 08:28 #5
ved du hvordan jeg kan fjerne den?
er der en måde af finde applicationens navn på? andet end bare at skrive det
Avatar billede marvind Nybegynder
29. februar 2008 - 13:37 #6
jeg har prøvet at bruge application.startuppath men det giver også C:\Users\Martin Tandrup\Desktop\jumpscar\winmx32\bin\Debug\\winmx32.exe
Avatar billede arne_v Ekspert
29. februar 2008 - 14:38 #7
undlad & "\"

eller brug Path.Combine (jeg er ret sikker på at den kan håndtere dir navne både uden
og med \)
Avatar billede marvind Nybegynder
29. februar 2008 - 15:03 #8
jeg har prøvet uden "\" det ændrer ikke noget.
nu vil den slet ikke lave en registry key mere(wtf?) jeg har ikke ændret i koden
Avatar billede arne_v Ekspert
01. marts 2008 - 00:19 #9
Mystisk.

Imports System
Imports System.IO

Namespace E
    Public Class MainClass
        Public Shared Sub Main(ByVal args As String())
            Dim base As String = AppDomain.CurrentDomain.BaseDirectory()
            Console.WriteLine(base & "foobar.exe")
            Console.WriteLine(Path.Combine(base, "foobar.exe"))
            Console.ReadKey()
        End Sub
    End Class
End Namespace

udskriver:

C:\IDEProjects\SharpDevelop3\E4\E4\bin\Debug\foobar.exe
C:\IDEProjects\SharpDevelop3\E4\E4\bin\Debug\foobar.exe

hos mig - ingen dobbelt \.
Avatar billede marvind Nybegynder
01. marts 2008 - 11:36 #10
hmm... underligt, jeg har ikke ændret i koden men nu virker de?
smider du et svar =)
Avatar billede arne_v Ekspert
01. marts 2008 - 15:47 #11
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester