Hallo und guten Abend
Ich bin ein wenig verzweifelt und benötige mal wieder eure Hilfe, öffne über ein Buton im Formular eine Anwendung (Ersatzteildienst), folgenes Problem tritt auf:
Mache ich ein Doppelklick auf klicke die Ersatzeil.EXE unter Window öffnet sich die Anwendung ganz normal. ;D ;D
Mache ich das ganze aus Access mit VBA wie folgt Shell ("C:\Ersatzteil\Proramm\Ersatzteil.EXE",VbNormal") , nun öffnet sich das Programm aber die Startseite wird nicht richtig dargestellt und in der Menueleiste befindliche Befehle wie "Bearbeiten" wird dann so Dargestellt "620Bearbeiten" . ??? ??? Nun habe ich das ganze auch schon mit Shellexecute versucht, Modul mit der ensprechenden "API " Befehlszeile eingefügt usw. die Anzeige bleibt wie bei dem Shell Befehl. ??? ???
Die Ersatzteil.EXE ist eine MFC Anwendung muss ich das öffnen der EXE File anders Behandeln?
Gruß Stefan
Hallo,
hast du schon versucht das Fenster beim Starten deiner EXE zu maximieren?
Shell ("C:\Ersatzteil\Programm\Ersatzteil.EXE", 3)
Mir scheint dass da die Fenstergröße ein Problem macht.
Hallo Peter
Das Problem bleibt wie im ersten Beitrag beschrieben bestehen. Was ich mir nicht erklären kann ist der Zustand das in der Menueleiste allen Befehlen eine Zahl vorraus geht. Wie "996Programm" , "620 Bearbeiten", usw sowie das Startfenster nicht richtig angezeigt wird.
Gruß Stefan
Hallo Stefan,
die Zahlen sind in der Tat sehr seltsam.
Ich habe sowas noch nie beobachtet.
Tja da bin ich mit meinem spärlichen Latein am Ende... ??? :'(
Hallo Peter
Gibt es vielleicht noch eine möglichkeit eine EXE File ausführen zu lassen, mit einer Batch ? oder ohne Shell ein anderen Befehl?
Gruß Stefan
Hallo,
versuch mal, einen Windows-Link zu erstellen, der das Programm startet. Diesen Link wiederum rufst Du mit Shellexecute (oder vielleicht geht auch Followhyperlink) aus Access auf.
Vielleicht fehlt ja auch eine Runtime-Library von C++ oder Ähnliches.
Hi,
die Idee mit dem Link ist auch nicht schlecht... !!
ZitatVielleicht fehlt ja auch eine Runtime-Library von C++ oder Ähnliches
Oder es gab ein paar Warnings beim Kompilieren, die auf das Problem Schlüsse zulassen?
Generell fehlerhafte Kompilierung kannst du ausschließen?
...und dann noch... schau mal da den letzten Beitrag an:
http://forum.chip.de/basic/exe-dateien-starten-vb-224343.html (http://forum.chip.de/basic/exe-dateien-starten-vb-224343.html)
... möglicherweise hast du mit ShellExecute und diesen Aufrufmöglichkeiten schon expereimentiert...
Hallo Franz hallo Peter
ZitatVielleicht fehlt ja auch eine Runtime-Library von C++ oder Ähnliches
Muss ich dafür einen Verweis setzen? oder verstehe das falsch
@Franz mit einem Link meinst du doch sicher eine Vernüpfung zum Dektop oder?
Habe soeben versucht das Programm per Batch zu öffnen bleibt die selbe Fehlerbeschreibung
Gruß Stefan
Bin mir jetzt nicht sicher, aber evtl mußt du vorher in das Verzeichnis der Ersatzteil.EXE wechseln.
Das mit den Zahlen ist schon etwas seltsam, irgendwie kann die so gestartete EXE eine Resource nicht richtig auslesen.
ZitatMuss ich dafür einen Verweis setzen?
Nein
Zitatoder verstehe das falsch
Ja, gemeint ist eine evtl. fehlende Bibliothek die die Exe benötigt, aber nicht findet.
Hallo
Habe da glaube für mich als Laie im Bezug auf API Anwendungen ein Verständnis Problem, wenn ich doch per klick eine EXE File unter Window anspreche und sie ausführen lasse, muss das wenn ich es per VBA mit Shell oder Shellexecute (per API ) anspreche nicht das selbe Ergebnis heraus kommen? Wo bei ich mit API so gut wie keine Erfahrung habe, nur das genutzt habe was hier im Forum gezeigt bzw zur Verfügung stand.
Wenn es da Unterschiede gibt könnte es mir jemand so erklären, das ich für ein Anhaltspunkt bekomme wo und was ich an Informationen suchen muss, denn im Moment stehe voll auf dem Schlauch :-* :-*
@Peter du hast mir den Link gesendet, Danke dafür!!!! Aber wie setze ich das für mich um?? ??? ???
Gruß Stefan
Hallo,
die Anwendung findet wie gesagt sehr vermutlich eine nötige DLL (Resourcen-Datei ---> daolix ) nicht.
Was ist denn anstelle der Zahl zu sehen, wenn die Anwendung korrekt funktioniert?
Hast Du die "Link"-Lösung mal probiert?
Wenn ein Doppelklick auf die Datei erfolgt, finden mehr Aktionen statt, als ein einfaches Starten der Exe-Datei mittels API oder dergleichen.
Vielleicht ist auch die MFC-Anwendung nicht richtig installiert (z. B registriert) und läuft beim Doppelklick halt nur zufällig korrekt.
Guten Morgen Franz
ZitatWas ist denn anstelle der Zahl zu sehen, wenn die Anwendung korrekt funktioniert?
Bei Normalen und richtigen Start ist dann die Zahlen in der Menueleiste nicht mehr vorhanden.
Richtig = Bearbeiten / Falsch = 620Bearbeiten
ZitatVielleicht ist auch die MFC-Anwendung nicht richtig installiert (z. B registriert) und läuft beim Doppelklick halt nur zufällig korrekt.
Das kann ich ausschließen da dieses auf mehren Rechner so geschieht, habe das zur Zeit auf drei Rechner laufen und alle haben das gleiche Problem.
Franz das mit der "Link"-Lösung habe ich nicht so ganz verstanden wie du das gemeint hast?
Wenn du gemeint hast ien Vernüpfung von der EXE File zu erstellen und die Aufzurufen, habe ich versucht bekome aber Fehlermeldungen "Datei nicht gefunden" , der Grund dafür liegt darin begründet das der Dateiname oder Pfad so dargestellt wird :D\Document and Settings\all User\ .. Die Lehrzeichen im Pfadnamen führen zu dem Problem, habe es mit Unterstrich versucht ohne erfolg nun suche ich in meinen Büchern nach einen Lösungsansatz war aber noch nicht Erfolgreich.
Gruß Stefan
Hallo
Bei Leerzeichen im Path ist dieser in Quotas zu setzten
"C:\Document and Settings\all User\PathtzurExe\Deine.Exe"
Aber eine Verküpfung erstellt doch der Explorer eigentlich korrekt (rechtsklick auf die exe, --> verknüfung erstellen), also auch mit den Gänsefüssen.
Hallo Daolix
Bekomme auch mit " " die Fehlermeldung >>> Datei nicht gefunden ???
Gruß Stefan
Hallo,
hat leider ein wenig gedauert - aber jetzt die Antwort auf deine Frage:
Zitat@Peter du hast mir den Link gesendet, Danke dafür!!!! Aber wie setze ich das für mich um?
Den folgenden Code fügst ins Formular ein in dem du den Button zum Aufrufen stehen hast - einfach mal so zum Testen
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
Private Const SW_SHOWNORMAL = 1
Private Sub DeinButton_Click()
Call ShellExecute(Me.hwnd, "Open", "c:\test.exe", vbNullString, vbNullString, SW_SHOWNORMAL)
End Sub
p.s.
ZitatBekomme auch mit " " die Fehlermeldung >>> Datei nicht gefunden
Na dann kopier halt die EXE-Datei mal testweise direkt ins Stammverzeichnis von C: dann Rechtsklick drauf und Verknüpfung erstellen, den Dateinamen der Verknüpfung kopierst du und fügst ihn an der Stelle (rot) ein:
Private Sub DeinButton_Click()
Call ShellExecute(Me.hwnd, "Open", "c:\test.exe - Verknüpfung", vbNullString, vbNullString, SW_SHOWNORMAL)
End Sub
HTH
ZitatHabe da glaube für mich als Laie im Bezug auf API Anwendungen ein Verständnis Problem, wenn ich doch per klick eine EXE File unter Window anspreche und sie ausführen lasse, muss das wenn ich es per VBA mit Shell oder Shellexecute (per API ) anspreche nicht das selbe Ergebnis heraus kommen?
Nein nicht unbedingt. Wenn du im explorer eine Datei mit Doppklick startest dann wird diese in diesem Verzeichnis ausgeführt, mit shell und Shellexecute mit Pathangabe eben nicht, hier wird das ausführende Verzeichnis das der mdb sein. Je nachdem wie die Exe das für sie momentane Ausführungsverzeichnis bestimmt, kann es sein das nachfolgen Dlls oder sonstige Resourcen aus dem Stammverzeichnis der Exe nicht gefunden werden. Ist aber eigentlich nur von Bedeutung wenn im Stammverzeichnis der Exe noch weitere Dateien vorhanden sind.
Deine von dir vorgeschlagene Bat-Datei müsste dann in etwa so aussehen:
cd "C:\Document and Settings\all User\PathtzurExe\"
"DeineExe.EXE"
Hallo Peter hallo Franz hallo @Daolix
Problem gelöst!!!!! ::) ::) ::)
Wie ich schon in meinen Beitrag geschrieben hatte, hatte ich versucht mit Shell oder Shellexecute die MFC Exe File zu öffnen.
Versucht habe ich es mit Shellexecute so:
Call ShellExecute(hwnd, "open", "C:\Ersatzteil\Program\Ersatzteil.exe", "", "", SW_SHOWNORMAL)
Mit der Code zeile hab ich genau wie mit Shell :
Shell ("C:\Ersatzteil\Program\Ersatzteil.exe", SW_Normal")
Bei beiden war das gleiche Ergebnis, falsch angezeigte Startseite inkl der Zahlen in der Menueleiste.
Nun hab ich es so gemacht:
Call ShellExecute(hwnd, "open", "C:\Ersatzteil\Program\Ersatzteil.exe", vbNullString, vbNullString, SW_SHOWNORMAL)
Und siehe da alles wird richtig angezeigt ??? ???
Danke für eure Hilfe
Gruß Stefan