{title}

Hilf mir! Ich rufe gerne immer eine andere PDF-Datei aus dem Visual Basic-Programm auf. Was stimmt in diesen Zeilen nicht? Vielen Dank

Ändern Sie die Zeile in Code: iPath & "" & filenameSie können keine Variablen in double s verwenden. Nur String-Werte werden durch ein doppeltes s dargestellt.

Sie fügen den Dateinamen in die Zeichenfolge ein: Code: Private Sub Command1_Click () iResult als DoubleDim iPath als StringDim dim Dateiname'iPath'Fixed Zeile darunter: iPath & filenameiResult = Shell (iPath, vbMaximizedFocus) End SubThat sollte funktionieren. Wie wäre es mit ein paar Verbesserungsvorschlägen? Anstatt Acrobat Reader direkt auszuführen, können Sie beispielsweise auch die PDF-Datei selbst ausführen, wodurch das Programm geöffnet wird, mit dem PDF-Dateien geöffnet werden sollen. Fügen Sie dazu diesen Code in den Deklarationsabschnitt des Formulars ein (ganz oben) top, under "Option Explicit" falls vorhanden.Code: Private Declare Function ShellExecute Lib "shell32.dll" Alias ​​"ShellExecuteA" _ (ByVal hWnd So lange, ByVal lpOperation als String, ByVal lpFile als String, ByVal lpParameters als String, _ByVal lpDirectory Als String, _ByVal nShowCmd As Long) As LongAnd platzieren Sie dies am Ende des restlichen Codes.Code: Private Function ShowFileDefault (Dateipfad als String, ownerHwnd As Long) As Boolean Dim Dummy As Long 'öffnen Sie die Datei mit der Standardeinstellung Editor oder Viewer. Dummy = ShellExecute (ownerHwnd, "Open", FilePath & Chr $ (0), Chr $ (0), _ Left $ (FilePath, InStr (FilePath, "")), 0) ShowFileDefault = Dummy End FunctionAs für Ihren ursprünglichen Code, um die neue Routine zu verwenden: Code: Private Sub Command1_Click () Dim iResult As D oubleDim iPath Als StringDim-Dateiname wird dieser Block platziert. 'iPath'Fixed-Zeile unten:' iPath & Dateiname'iResult = Shell (iPath, vbMaximizedFocus) 'mit dieser Zeile: ShowFileDefault Filename, Me.HwndEnd SubIch hoffe, das hilft!

Danke an alle!

Während ich den letzten Code in meinem Projekt verwende und ausführe, erhalte ich die Meldung Private Declare Function ShellExecute Lib "shell32.dll" Alias ​​"ShellExecuteA" _ (ByVal hWnd solange, ByVal lpOperation als String, ByVal lpFile als String, ByVal lpParameters als String, _ByVal lpDirectory As String, _ByVal nShowCmd As Long) Solange ich diese Option in der allgemeinen DeklarationsoptionPrivate Sub mnuHelpGeneral_Click () hinzugefügt habe Sub i Fügte dies in die in der Hilfe auf OptionPrivate Funktion ShowFileDefault (FilePath As String, ownerHwnd As Long) hinzu. As Boolean Dim dummy As Long 'öffne die Datei mit dem Standardeditor oder -viewer. dummy = ShellExecute (ownerHwnd, "Open", FilePath & Chr $ (0), Chr $ (0), _ Left $ (FilePath, InStr (FilePath, "")), 0) ShowFileDefault = dummy End Function Ich habe dies hinzugefügt am Ende des Codebuts, während ich den Quellcode ausführe und Fehlermeldungen erhalte, helfen Sie mir bitte, dieses Problem zu lösen

Code: Dim filenamedimensions a Variant type variable. ShowFileDefault möchte einen String. Ändern Sie entweder Dim in: Code: Dim filename as String, oder ändern Sie optional die showFiledefault-Deklaration in: Code: Private Function ShowFileDefault (Byval FilePath As String, ownerHwnd As Long) As Boolean, der versucht, das angegebene Argument zu konvertieren (in diesem Fall) , eine Variante) zum gewünschten String.

Code: dummy = ShellExecute (ownerHwnd, "Open", FilePath & Chr $ (0), Chr $ (0), _ Left $ (FilePath, InStr (FilePath, "")), 0) und wenn das 5. Argument ( lpDirectory) bedeutet Arbeitsverzeichnis, dann sollte InStrRev anstelle von InStr verwendet werden, das das Root-Laufwerk zurückgibt.

Oder lassen Sie es einfach leer. Das funktioniert auch. Ändern Sie wahrscheinlich auch die 0 in vbnormalFocus. Mit 0 wird es in der Taskleiste angezeigt, das Fenster kann jedoch nicht für das Programm angezeigt werden. Eigentlich bevorzuge ich ShellExecuteEx.

yup, richtig, das funktioniert auch.von msdn Verweis: //msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx Die ShellExecuteEx-API sieht kompliziert aus, bietet jedoch offenbar mehr Kontrolle über den erstellten Prozess. Haben Sie ein Wrapper-Modul für ShellExecuteEx?

Es ist nicht wirklich so kompliziert. Hier ist eine, die es verwendet, um den Dialog Öffnen mit für jede Datei anzuzeigen: Deklarationen: Code: Private Deklarierungsfunktion GetCurrentProcess Lib "kernel32.dll" () Als LongPrivate Deklarierungsfunktion ShellExecuteEx Lib "shell32.dll" (ByRef lpExecInfo As SHELLEXECUTEINFOA) As LongPrivate-Typ SHELLEXECUTEINFOA cbSize As Long fMask As Long hwnd As Long lpVerb As String lpFile As String lpParameters As String lpDirectory As String nShow As Long hInstApp As Long 'Felder lpIDClassList As Long hInstApp As Long As Long hProcess As LongEnd TypeCode: Code: Public Function OpenWith (ByVal HwndOwner Als String, ByVal FilePath Als String, Optional ByVal Icon As Long = 0) As Long Dim sei As String verba sei.hIcon = Icon sei.hProcess = GetCurrentProcess () sei.hInstApp = App.hInstance sei.lpVerb = verba sei.lpFile = Dateipfad sei.nShow = vbNormalFocus sei.cbSize = Len (sei) OpenWith = ShellExecuteEx (sei) 'StopEnd Function'anoth Bei dieser Option kann das Verb zusammen mit mehreren anderen Teilen der Struktur als Argument angegeben werden.

IE6.0, Wenn ich den IE öffne, wird er routinemäßig unter Windows/RESOLVED geöffnet

Ich verwende IE6.0 (OS-XP Professional), wenn ich auf das Symbol klicke, öffnet es zwei Fenster

Was ist passiert, bevor dies begann, und welchen Schutz haben Sie? Die oben genannten Ratschläge sind nicht besonders gut. Das Aktualisieren auf IE7 verursacht häufig mehr Probleme als es löst. Ich bevorzuge auch Firefox, ziehen Sie dies als Alternative in Betracht.

Welche Art von Beratung ist das? ?

Plötzlich bedeutet schnelles Klicken, oder? Ich vermute, Sie öffnen tatsächlich zwei Fenster, indem Sie zweimal auf das Symbol klicken. Machen Sie es etwas langsamer und achten Sie darauf, dass Sie nicht zweimal auf das Symbol klicken. Funktioniert es?

Kurz gesagt, aber Ihre Ordneroptionen können auf Einzelklick zum Öffnen von Elementen eingestellt sein. Gehen Sie zu Systemsteuerung> Ordneroptionen und stellen Sie unter der Registerkarte "Allgemein" sicher, dass dies die Option "Elemente wie folgt anklicken" ist Aktivieren Sie die Option "Doppelklicken, um ein Element zu öffnen (einzelnes Element zur Auswahl)" und klicken Sie auf "Übernehmen". löst das es?

Whoa da, Kumpel. Angesichts der Unmengen an Informationen, die Sie uns zur Verfügung gestellt haben, habe ich eine gewisse Überlastung und es kann etwas Zeit in Anspruch nehmen, alles zu verarbeiten.

Problem gelöstDanke alottttttttt

Beliebte Beiträge