Zum Inhalt springen

Common Dialog


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...