Shell Befehl

cobfreaky

Mitglied
Hey Leute.

Ich möchte meinen "Shell" -Befehl verallgemeinern. In meinem Code beispiel ist der Shell Befehl für ein einfaches Text Dokument.

Code:
 Shell "C:\Dokumente und Einstellungen\Robin\Desktop\test.txt"

Wie ihr seht, ist mein Benutzername Hervorgehoben. Da liegt auch mein Problem. Nicht jeder hat den Benutzernamen "Robin". Wie kann ich also den Befehl verallgemeinern, sodass z.B auch Benuter mit dem Namen "Matthias" die Datei öffnen können?

Gruß,
Cobfreaky
 
Ich kann dir da nicht wirklich weiterhelfen... ich denke eigentlich sollte es eine Eleganter lösung geben...

Aber du könntest z.B. den Benutzernamen Auslesen
Ich habe hier einen Beispiel Code wie man das mache (Ungetestet)
ivate Declare Function GetUserName _
Lib "advapi32.dll" _
Alias "GetUserNameA" _
( _
ByVal lpBuffer As String, _
ByRef nSize As Long _
) As Long

Private Declare Function GetComputerName _
Lib "kernel32.dll" _
Alias "GetComputerNameA" _
( _
ByVal lpBuffer As String, _
ByRef nSize As Long _
) As Long

Private Const MAX_COMPUTERNAME_LENGTH As Long = 31&

Private Function UserName() As String
Dim s As String
s = Space$(255)
Dim nSize As Long
nSize = Len(s)
Dim n As Long
n = GetUserNameA(s, nSize)
If n = 0& Then
UserName = ""
Else
UserName = Left$(s, nSize - 1)
End If
End Function

Private Function ComputerName() As String
Dim s As String
s = Space$(MAX_COMPUTERNAME_LENGTH + 1)
Dim nSize As Long
nSize = Len(s)
Dim n As Long
n = GetComputerNameA(s, nSize)
If n = 0& Then
ComputerName = ""
Else
ComputerName = Left$(s, nSize - 1)
End If
End Function

Und dann könnte das evt so funktionieren?
Shell "C:\Dokumente und Einstellungen\" & UserName & "\Desktop\test.txt"


Wie gesagt ist jetz nur so ein Gedanke ;) Versuchs halt mal aus.
 
Ich glaube da könnte dir "Environ" helfen. Damit lassen sich Umgebungsvariablen benutzen.

Visual Basic:
Shell Environ("USERPROFILE")  & "\Desktop\Test.bat", vbNormalFocus

Damit lassen sich aber keine .txt Dateien öffnen, sondern nur .bat, .exe, .com oder .pif.
Um auch andere Dateien öffnen zu können, benötigst du die API ShellExecute.
Hier die Deklaration

Visual Basic:
Private Declare Function ShellExecute Lib "shell32.dll" _
                 Alias "ShellExecuteA" ( _
                 ByVal hwnd As Long, _
                 ByVal lpOperation As String, _
                 ByVal lpFile As String, _
                 ByVal lpParameters As String, _
                 ByVal lpDirectory As String, _
                 ByVal nShowCmd As Long) As Long

So rufst du sie auf:

Visual Basic:
Call ShellExecute(Me.hwnd, "Open", Environ("USERPROFILE")  & "\Desktop\Test.txt", "", vbNullString, 1)

Hoffe das war das was du suchtest, bei Fragen frag einfach ;)

PS: Um alle Umgebungsvariablen anzusehen, gib einfach in der Eingabeaufforderung den Befehl "Set" (ohne Anführungszeichen) ein. :)
 
Zuletzt bearbeitet:
Zurück