Stahl Florian: Visual Basic wie kann ich einen Link zu einer Datei einfügen

Sers

Ich hab 2 Fragen zu Visual Basic 6:

  • Wenn ich auf ein CMD Button klick, wie mache ich es dass es dann eine exe datei oder sowas öffnet?

  • Wie kann ich die Schriftgrösse von Labels ändern?

Wäre für Antwort dankbar.
danke.

  1. Hi,

    zum Starten entweder Shell oder API-Aufruf.

    Schriftgröße des Labels kannst du unter den Schriftarteinstellungen im Eigenschaften-Dialog ändern.

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Danke.

      die Schriftgrösse hab ich kapiert, aber nicht das Programm ausführen.

      Bin ein Anfänger.

      1. Hi,

        sorry wenn das jetzt hart klingt, aber welchen Teil genau hast du nicht verstanden? Du hast irgendein Programm das du ausführen möchtest, wie bei normaler Anwendung brauchst du den Pfad als Zeichenkette.
        Jetzt gibts zwei Möglichkeiten:
        Shell
        und
        über die API, wo du deinen Programmfluss unterbrechen kannst so lange das aufgerufene Programm noch läuft.

        MfG
        Rouven

        --
        -------------------
        ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
        1. Also;

          ich hab ein Commandbutton. Und wenn ich nun ein fertiges Projekt als .exe datei erstellt habe und es aufgerufe habe, erscheint das button.
          Nun will ich da draufklicken und es soll z.B. ein ordner oder eine andere .exe datei geöffnet werden.

          Was muss ich da in den Quelltext von dem CMD schreiben?

          1. Hi,

            na ja, also nochmal:

            ' Wenn du es per Shell aufrufen willst:
            Sub myCommand_Click()
               Shell "c:\programme\mein programm\meinprogramm.exe", vbNormalFocus
            End Sub

            ' Wenn du warten willst, bis das Programm zu Ende gelaufen ist:
            'zunächst die benötigten API-Deklarationen
            Private Declare Function CloseHandle Lib "kernel32" _
              (ByVal hObject As Long) As Long

            Private Declare Function OpenProcess Lib "kernel32" _
              (ByVal dwDesiredAccess As Long, _
              ByVal bInheritHandle As Long, _
              ByVal dwProcessId As Long) As Long

            Private Declare Function WaitForSingleObject Lib _
              "kernel32" (ByVal hHandle As Long, _
              ByVal dwMilliseconds As Long) As Long

            Private Const INFINITE = &HFFFF
            Private Const SYNCHRONIZE = &H100000

            'Warten bis Anwendung beendet
            Public Sub AppStartAndWait(ByVal sFile As String, _
              ByVal WindowStyle As Long)

            'Parameterbeschreibung
              'sFile:  Anwendung, die gestartet werden soll
              'wStyle: Darstellungsart des Anwendungsfensters

            Dim lRetVal As Long
              Dim lHandle As Long
              Dim lRet As Long

            lRetVal = Shell(sFile, wStyle)
              If lRetVal <> 0 Then
                lHandle = OpenProcess(SYNCHRONIZE, 0, lRetVal)
                If lHandle <> 0 Then
                  lRet = WaitForSingleObject(lHandle, INFINITE)
                  CloseHandle (lHandle)
                End If
              End If
            End Sub

            Sub myCommand_Click()
               AppStartAndWait "c:\programme\mein programm\meinprogramm.exe", vbNormalFocus
            End Sub

            MfG
            Rouven

            --
            -------------------
            ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
            1. Hellihello Rouven,

              wenn ich das via hta als vbscript laufen lasse kommt in

                
              Private Declare Function CloseHandle Lib "kernel32" _  
                (ByVal hObject As Long) As Long  
              
              

              "Zeichen 17 Anweisungsende erwartet".

              Liegt das daran, dass .hta nicht VBS-6 unterstützt? WScript kennt es auch nicht.

              Dank und Gruß,

              Frankx

              1. Hi,

                ehrliche Antwort? Ich hab keine Ahnung von .hta, kann das API-Funktionen deklarieren? Das ist ja nicht das Einführen einer Funktion sondern die Übernahme einer Funktion aus einer externen dll.

                MfG
                Rouven

                --
                -------------------
                ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
                1. Hellihello Rouven,

                  dank der Antwort. Also sowas kann es:

                  ' create shell object
                   dim wshShell
                   set wshShell = CreateObject("WScript.Shell")

                  ' execute programm
                   dim oExec
                   wshShell.Run("http://www.google.de")

                  Ich hab keine Ahnung von API-Funktionen?

                  Gruß,

                  frankx

                  1. Moin moin,

                    dank der Antwort. Also sowas kann es:

                    ' create shell object
                    dim wshShell
                    set wshShell = CreateObject("WScript.Shell")

                    ' execute programm
                    dim oExec
                    wshShell.Run("http://www.google.de")

                    ja, das ist auch ganz normales VBS. Mit API ruft man Funktionen auf, die z. B. in dll-Dateien zentral zur Verfügung stehen. Im Beispiel wäre das:

                    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

                    CloseHandle für den Namen der Funktion
                    Lib für Library
                    "kernel32" für kernel32.dll
                    ByVal hObject Parameter, der an die Funktion zurückgegeben wird
                    As Long Datentyp.

                    Wenn Du die Windows-Schnellansicht installiert hast, kannst Du eine dll auch damit aufrufen, da siehst Du, was drin steckt.

                    Ob VBS API kann, weiß ich aber auch nicht. Da ich es nicht brauche, habe ich auch keine Lust, es zu testen. ;-)

                    Viele Grüße

                    Jörg

                    1. Hellihello,

                      dank für die Antwort. Wenn ich VBS in eine hta einbinde, kann es nicht mal:

                      Dim RetVal As Long

                      nur

                      Dim RetVal

                      scheints ist VBS in *.hta etwas restriktiv oder was. Kenn mich mit VBS selbst halt auch nicht so aus, kapiere erst jetzt, dass API scheints was anderes ist als VBS, dachte immer, dass sei ein Interface.

                      Wenn ichs als *.vbs abspeicher, dann geht wenigstens die "As Long" Deklaration.

                      Irgendwie muss ja VBS API können http://www.vbarchiv.net/archiv/tipp_details.php?pid=169, aber vielleicht ist ja VBS nicht gleich VBS?

                      frankx

                      1. Hi,

                        scheints ist VBS in *.hta etwas restriktiv oder was. Kenn mich mit VBS selbst halt auch nicht so aus, kapiere erst jetzt, dass API scheints was anderes ist als VBS, dachte immer, dass sei ein Interface.

                        Das ist es es ja auch: Application Programming Interface.

                        Irgendwie muss ja VBS API können http://www.vbarchiv.net/archiv/tipp_details.php?pid=169, aber vielleicht ist ja VBS nicht gleich VBS?

                        Nee, aber Dein Beispiel ist nicht VBS, sondern VB (bzw. auch VBA). Das kann natürlich mit API umgehen (wäre schlimm, wenn nicht ...).

                        Viele Grüße

                        Jörg

                        1. Hellihello Jörg,

                          Nee, aber Dein Beispiel ist nicht VBS, sondern VB (bzw. auch VBA). Das kann natürlich mit API umgehen (wäre schlimm, wenn nicht ...).

                          oha, der Groschen hat etwas gedauert. VBS ist die Urform oder eine Abart oder was? Ich hatte mithin schon verstanden, dass VBA VB für Application ist, also aus Word und Excel raus läuft. VB6 ist dann die neuste Version, da gibt es doch auch ein freies "Studio" zu, oder? Die kleine Version sozusagen, mit am Ende kleinem Installer, der das dann automatisch installieren kann?

                          auch viele Grüße,

                          frankx

                          1. Halli hallo,

                            oha, der Groschen hat etwas gedauert. VBS ist die Urform oder eine Abart oder was?

                            Mit VBS habe ich mich nun schon Jahre nicht mehr beschäftigt, aber meines Erachtens wird zur Ausführung der Windows-Scripting-Host benötigt (oder der IE ;-)). Ob es nun die Urform oder eine Abart ist - keine Ahnung.

                            Ich hatte mithin schon verstanden, dass VBA VB für Application ist, also aus Word und Excel raus läuft. VB6 ist dann die neuste Version, da gibt es doch auch ein freies "Studio" zu, oder?

                            VB ist die eigentliche Sprache. Die Scripte werden am Ende kompiliert, wodurch man u. a. exe-Dateien hat, die selbständig lauffähig sind. Ein Studio dafür gibt es, das Visual Studio, aber meins war nicht gerade frei, sondern ziemlich teuer ... ;-)
                            Ich kann mir auch nicht vorstellen, dass es dafür ein freies Studio gibt, lasse mich aber gern belehren. Bei mir ist auch ein Verpackungs- und Weitergabe-Assi dabei, mit dem man Setuppakete erstellen kann. Dafür gibt es aber auch andere Programme.

                            VBA ist VB für Anwendungen. Das braucht zur Ausführung das jeweilige Programm, wie Excel, Word, usw. Vom Umfang her ist es im Prinzip so mächtig wie VB, bringt aber - in Abhängigkeit von der Anwendung - besondere Objekte, Eigenschaften und Methoden mit. Was man mit VBA nicht machen kann, ist eine exe erstellen (eine gern gestellte Frage).

                            Viele Grüße

                            Jörg

                            1. Hellihello Jörg,

                              Ich kann mir auch nicht vorstellen, dass es dafür ein freies Studio gibt, lasse mich aber gern belehren.

                              das hier meinte ich.

                              Vom Umfang her ist es im Prinzip so mächtig wie VB, bringt aber - in Abhängigkeit von der Anwendung - besondere Objekte, Eigenschaften und Methoden mit.

                              Aha, aber ich kann aus Wort oder Excel alles per VBA steuern. Mir geht es in erster Linie um Automatisierung auf meinem Rechner: Mach IE auf, nimm Seite so und so, druck sie aus, 2 mal, mach wieder zu. Bis aufs zumachen hab ich alles mit VBS geschafft, nämlich "referenzAufIE.Quit" geht da nicht. Nehm ich jetzt das Script, pack es in Excel rein (in den Makro-Editor, oder Word) könnt ich mir sogar noch eine Exceldatei so basteln, dass beim Aufgehen nur ein Formular zu sehen ist, bestenfalls sogar schon ein Programmteil losläuft?

                              Dank und Gruß,

                              frankx

                              1. Halli hallo,

                                das hier meinte ich.

                                Das sieht ja interessant aus, kannte ich noch nicht. Aber kompilieren kann man das Ganze nicht - oder?

                                Aha, aber ich kann aus Wort oder Excel alles per VBA steuern.

                                Im Prinzip kann man mit VBA alles machen, was eine Windowsanwendung können soll. Selbst den Loveletter in Excel zum Laufen zu bringen ist kein Problem. Vor einigen Monaten habe ich eine Glühofensteuerung geschrieben, jetzt gerade die Auswertung für eine oszillierende Verdrängerpumpe, alles in Excel mit VBA.

                                Nehm ich jetzt das Script, pack es in Excel rein (in den Makro-Editor, oder Word) könnt ich mir sogar noch eine Exceldatei so basteln, dass beim Aufgehen nur ein Formular zu sehen ist, bestenfalls sogar schon ein Programmteil losläuft?

                                Ja. Du kannst es sogar so weit bringen, dass man gar nicht mitbekommt, dass Excel im Hintergrund läuft. Ein Kunde wollte mal eine "Hochsicherheitssoftware", da durfte nur ein bestimmtes Fenster zu sehen sein, nicht mal die Startleiste. Auch das ging. Und wenn man möchte, dass die Makrowarnung nicht erscheint, lässt man die Exceldatei von extern, z. B. durch eine exe, aufrufen und schon rennt VBA los.

                                Viele Grüße

                                Jörg

                                1. Hellihello

                                  Halli hallo,

                                  das hier meinte ich.

                                  Das sieht ja interessant aus, kannte ich noch nicht. Aber kompilieren kann man das Ganze nicht - oder?

                                  Doch, gerade das glaube ich. Ich hatte damit mal ein Fenster mit einem Knopf hergestellt. Als .exe mit installer. Ist schon ein paar Monate her.

                                  Makrowarnung

                                  Heißt, er warnt, wenn ein Makro läuft, oder die Firewall oder was?

                                  Dank und Gruß

                                  frankx

                                  1. Hi,

                                    Doch, gerade das glaube ich. Ich hatte damit mal ein Fenster mit einem Knopf hergestellt. Als .exe mit installer. Ist schon ein paar Monate her.

                                    dann müsste man sich das ja direkt mal ansehen ...

                                    Makrowarnung

                                    Heißt, er warnt, wenn ein Makro läuft, oder die Firewall oder was?

                                    Nein. In Excel & Co. kann man die Sicherheit so einstellen (Extras - Makro - Sicherheit), dass beim Aufruf einer Datei mit Makros eine Warnung erscheint und die Frage, ob man Makros aktivieren oder deaktivieren möchte. Das kann zwar nützlich sein, ist aber auch lästig, wenn man viel mit VBA arbeitet. Deshalb habe ich mir angewöhnt, zu jeder VBA-Anwendung eine kleine exe zu schreiben, die dann die Exceldatei mit dem Code von außen aufruft. Damit kann man diese Makrowarnung umgehen und VBA wird gleich interpretiert.

                                    Falls Dich die Geschichte mit VBA interessiert, kannst Du Dir auch mal diese Beispieldateien ansehen: http://www.vba-beispiele.de/?details=76.

                                    Viele Grüße

                                    Jörg

                    2. Hellihello Jörg,

                      Wenn Du die Windows-Schnellansicht installiert hast, kannst Du eine dll auch damit aufrufen, da siehst Du, was drin steckt.

                      Da hängen wohl mehrere Groschen bei mir. Trotz http://www.computerhilfen.de/magazin-windows-schnellansicht.php3 Registryeintragsänderung kommt nischt, ich seh auch bei .txt oder .doc files keine Option Schnellansicht im Kontextmenü. Und guhgeln half och nicht mehr.

                      Dank,

                      frankx

                      1. Moin moin,

                        Da hängen wohl mehrere Groschen bei mir. Trotz http://www.computerhilfen.de/magazin-windows-schnellansicht.php3 Registryeintragsänderung kommt nischt, ich seh auch bei .txt oder .doc files keine Option Schnellansicht im Kontextmenü. Und guhgeln half och nicht mehr.

                        nee, die Schnellansicht muss über das Windows-Setup installiert werden. Mit dem verlinkten Tip erweitert man sie nur.

                        Viele Grüße

                        Jörg

                        1. Hellihello

                          nee, die Schnellansicht muss über das Windows-Setup installiert werden. Mit dem verlinkten Tip erweitert man sie nur.

                          und ist bei XP-Home nicht möglich? Ich finds nicht.

                          Dankx

                          frankx

                          1. Hi,

                            nee, die Schnellansicht muss über das Windows-Setup installiert werden. Mit dem verlinkten Tip erweitert man sie nur.

                            und ist bei XP-Home nicht möglich? Ich finds nicht.

                            puh, da bin ich überfragt ...

                            Das letzte Mal habe ich es bei Win 98 gemacht, da ging es.

                            Viele Grüße

                            Jörg

                            1. Hellihello

                              also http://www.mcseboard.de/archiv/28/2004/02/3/26348 hat
                              scheinbar auch das problem gehabt. Gibt es sie unter Winxp überhaupt noch?

                              frankx

                              1. Hi,

                                also http://www.mcseboard.de/archiv/28/2004/02/3/26348 hat
                                scheinbar auch das problem gehabt. Gibt es sie unter Winxp überhaupt noch?

                                anscheinend nicht: http://support.microsoft.com/?kbid=229889.

                                Aber es gibt ja im Internet genug Seiten, auf denen API-Funktionen beschrieben werden.

                                Viele Grüße

                                Jörg

                                1. Hellihello Jörg,

                                  dank für den Hinweis. Weißt Du denn, ob Java genauso "mächtig" bzw. Windows-kompatibel ist wie VB(A),

                                  frankx

                                  1. Hi,

                                    dank für den Hinweis. Weißt Du denn, ob Java genauso "mächtig" bzw. Windows-kompatibel ist wie VB(A),

                                    nee, da kann ich nicht mit dienen. ;-)
                                    Bei Java denke ich immer zuerst an die Applets - und die habe ich ausgeschaltet.

                                    Aber da findet sich doch bestimmt jemand, der dazu 'ne Aussage treffen kann ...

                                    Viele Grüße und ein schönes WE

                                    Jörg

  2. Hallo,

    • Wenn ich auf ein CMD Button klick, wie mache ich es dass es dann eine exe datei oder sowas öffnet?

    du könntest das programm: rundll32.exe url.dll,FileProtocolHandler <URL>
      ausführen.

    gruss

    --
    Swiss Army Chainsaw
    Terrorific!
    Given a cow full of milk, should the milk un-cow itself, or should the cow milk itself?