StarLord Geschrieben 28. Mai 2002 Geschrieben 28. Mai 2002 Ach ja, nochwas zu ShellExecute: 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 'nShowCmd Konstanten: Const SW_HIDE = 0 Const SW_SHOWNORMAL = 1 Const SW_NORMAL = 1 Const SW_SHOWMINIMIZED = 2 Const SW_SHOWMAXIMIZED = 3 Const SW_MAXIMIZE = 3 Const SW_SHOWNOACTIVATE = 4 Const SW_SHOW = 5 Const SW_MINIMIZE = 6 Const SW_SHOWMINNOACTIVE = 7 Const SW_SHOWNA = 8 Const SW_RESTORE = 9 Const SW_SHOWDEFAULT = 10 Const SW_FORCEMINIMIZE = 11 Const SW_MAX = 11 'Und dann gibts noch für lpOperation folgendes: ' "open" => Öffnet eine Datei, kann kein Verzeichnis öffnen! ' "print" => Druckt eine druckbare (nicht ausführbare) Datei ' "explore" => Öffnet das Verzeichnis mit dem Explorer Private Sub Form_Load() ShellExecute Me.hwnd, vbNullString, "Tips.txt", vbNullString, "C:\Windows", SW_SHOWNORMAL End Sub Zitieren
Schneeflocke Geschrieben 28. Mai 2002 Autor Geschrieben 28. Mai 2002 cool, hab es mit Dir und CurDir probiert und es funzt! *freeeeeeeuuuuuuuuuu* THX Flöckchen! Zitieren
Boro Geschrieben 28. Mai 2002 Geschrieben 28. Mai 2002 Original geschrieben von StarLord Natürlich geht das. Hier ein simples Beispiel: Private Sub Command1_Click() If Dir("C:\Windows\Tips.txt2", vbNormal) <> "" Then MsgBox "Datei gefunden.", vbOKOnly Else MsgBox "Datei nicht gefunden!", vbOKOnly End If End Sub Gruß, StarLord Also, der Code stimmt nicht, da wird immer nur der Else-Zeig durchlaufen. Hier mein Code für das Bespiel : If Dir("C:\Programme\zubehör\cis.txt", vbNormal) <> "" Then MsgBox ("Der Pfad stimmt") Else MsgBox ("Der Pfad stimmt NICHT") End If Auch die Zuweisung an eine Varable von Typ Variant bleibt ohne Ergebnis (kein Wert in Variable) Zitieren
StarLord Geschrieben 28. Mai 2002 Geschrieben 28. Mai 2002 Original geschrieben von Feivel Also, der Code stimmt nicht, da wird immer nur der Else-Zeig durchlaufen. Warum nicht, ich hatte ihn mehrmals mit Erfolg getestet. Original geschrieben von Feivel Hier mein Code für das Bespiel : If Dir("C:\Programme\zubehör\cis.txt", vbNormal) <> "" Then MsgBox ("Der Pfad stimmt") Else MsgBox ("Der Pfad stimmt NICHT") End If Kannst du mir mal verraten was an deinem Code anders ist, außer dass du die MessageBox-Funktion anders aufrufst? Ich verwende übrigens VB 6.0, verwendest du VB.NET oder wie das neue heißt? Original geschrieben von Feivel Auch die Zuweisung an eine Varable von Typ Variant bleibt ohne Ergebnis (kein Wert in Variable) Was willst du mir mit diesem Satz sagen? Die Dir-Funktion liefert bei der von mir verwendeten Methode einen String zurück, keinen Variant. Ich werde es aber nochmals bei Gelegenheit überprüfen. Gruß, StarLord Zitieren
Boro Geschrieben 28. Mai 2002 Geschrieben 28. Mai 2002 Auch die Zuweisung an eine Varable von Typ Variant bleibt ohne Ergebnis (kein Wert in Variable) Was willst du mir mit diesem Satz sagen? Das eine Variable vom Datentyp Variant keinen Wert angenommen hat, anders kann man es nicht ausdrücken. Die Dir-Funktion liefert bei der von mir verwendeten Methode einen String zurück, keinen Variant. Ich werde es aber nochmals bei Gelegenheit überprüfen. Spielt doch keine Rolle, Variant behandelt Stringtypen genauso wie eine Stringvariable. Wenn du Option Explicit aus hast und den Datentyp nicht mit angibst ist eh alles von Typ Variant. Habe Variant genommen da ich auf ein Objekt als Rückgabewert gefasst sein wollte. Ich habe beides getest, VB. net & 6.0. Es klappt bei beiden nicht. Ich denke vielmehr dass du irgendeinen Verweis in dein Projekt eingebunden hast denn ich nicht drin habe. Ansonsten geschehen halt doch noch Wunder. Kannst ja mal testen und dich melden, eilt aber nicht, hab es mit dem Errorhandler gelöst. Danke trotzdem ! Gruß Feivel Zitieren
KarlBerg Geschrieben 29. Mai 2002 Geschrieben 29. Mai 2002 -Sorry, hatte versehentlich im falschen Tread gepostet.- Zitieren
StarLord Geschrieben 29. Mai 2002 Geschrieben 29. Mai 2002 Original geschrieben von Feivel Spielt doch keine Rolle, Variant behandelt Stringtypen genauso wie eine Stringvariable. Wenn du Option Explicit aus hast und den Datentyp nicht mit angibst ist eh alles von Typ Variant. Habe Variant genommen da ich auf ein Objekt als Rückgabewert gefasst sein wollte. Ich verstehe dein Problem dabei immer noch nicht. Wo hatte ich eine Variable vom Typ Variant verwendet? Wo hatte ich eine Variable vom Typ String verwendet? Es geht auch ohne. Hier mal ein Auszug aus der Hilfe: Dir Function Returns a String representing the name of a file, directory, or folder that matches a specified pattern or file attribute, or the volume label of a drive. Man beachte auch das Beispiel aus der Hilfe: Dim MyFile, MyPath, MyName ' Returns "WIN.INI" if it exists. MyFile = Dir("C:\WINDOWS\WIN.INI") ' Returns filename with specified extension. If more than one *.ini ' file exists, the first file found is returned. MyFile = Dir("C:\WINDOWS\*.INI") ' Call Dir again without arguments to return the next *.INI file in the ' same directory. MyFile = Dir ' Return first *.TXT file with a set hidden attribute. MyFile = Dir("*.TXT", vbHidden) ' Display the names in C:\ that represent directories. MyPath = "c:\" ' Set the path. MyName = Dir(MyPath, vbDirectory) ' Retrieve the first entry. Do While MyName <> "" ' Start the loop. ' Ignore the current directory and the encompassing directory. If MyName <> "." And MyName <> ".." Then ' Use bitwise comparison to make sure MyName is a directory. If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then Debug.Print MyName ' Display entry only if it End If ' it represents a directory. End If MyName = Dir ' Get next entry. Loop Dort steht eindeutig dass Dir einen String zurückliefert. Was willst du also sändig mit deinem Variant? Original geschrieben von Feivel Ich habe beides getest, VB. net & 6.0. Es klappt bei beiden nicht. Ich denke vielmehr dass du irgendeinen Verweis in dein Projekt eingebunden hast denn ich nicht drin habe. Hatte ich nicht. Ich hatte keinerlei Module eingebunden noch sonstige veränderungen vorgenommen. Kann es sein dass es nicht funktioniert weil ich statt "Tips.txt" "Tips.txt2" geschrieben hatte? Möglicherweise funktioniert es auch (wiedermal) nur unter Win9x? In der Hilfe dazu steht leider keine Angabe zu den Betriebssystemen... typisch MicroSchrott. Original geschrieben von Feivel Ansonsten geschehen halt doch noch Wunder. Kannst ja mal testen und dich melden, eilt aber nicht, hab es mit dem Errorhandler gelöst. Das ist auch eine Möglichkeit... einfach CreateFile, testen ob der Handle in Ordnung ist und wenn ja CloseHandle. Aber es gibt immer viele Wege nach Rom. Gruß, StarLord Zitieren
Boro Geschrieben 29. Mai 2002 Geschrieben 29. Mai 2002 Original geschrieben von StarLord Ich verstehe dein Problem dabei immer noch nicht. Wo hatte ich eine Variable vom Typ Variant verwendet? Wo hatte ich eine Variable vom Typ String verwendet? Es geht auch ohne. Gruß, StarLord Du hattest keine Variable vom Typ Variant verwendet, aber nachdem dein Beispiel nicht funktionierte habe ich das Beispiel aus der Hilfe genommen, also genau dass was du oben gepostet hast und dass arbeitet mit einem Variant. Aber dass hat auch nicht funktioniert. Original geschrieben von StarLord Ich hatte keinerlei Module eingebunden noch sonstige veränderungen vorgenommen. Kann es sein dass es nicht funktioniert weil ich statt "Tips.txt" "Tips.txt2" geschrieben hatte? Möglicherweise funktioniert es auch (wiedermal) nur unter Win9x? Gruß, StarLord Nein, dass kann ich ausschließen, ich habe es unter 6.0 unter Windows 98 SE getestet und unter VB.net unter XP. Vielleicht ist die Funktion bei der Professional nicht dabei ? Original geschrieben von StarLord Das ist auch eine Möglichkeit... einfach CreateFile, testen ob der Handle in Ordnung ist und wenn ja CloseHandle. StarLord Stimmt, würde auch gehen, ich hab es mir einfach gemacht, bei entsprechender Fehlernummer wird die Datei einfach neu erstellt & Resume Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.