Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Öffnen einer MFC anwendung mit Shell ?

Begonnen von Stapi, August 23, 2011, 20:36:34

⏪ vorheriges - nächstes ⏩

Stapi

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
Grüße aus dem schönen NRW
Stefan

database

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.

Stapi

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
Grüße aus dem schönen NRW
Stefan

database

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...   ??? :'(

Stapi

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
Grüße aus dem schönen NRW
Stefan

DF6GL

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.




database

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

... möglicherweise hast du mit ShellExecute und diesen Aufrufmöglichkeiten schon expereimentiert... 

Stapi

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
Grüße aus dem schönen NRW
Stefan

daolix

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. 

Stapi

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
Grüße aus dem schönen NRW
Stefan

DF6GL

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.

Stapi

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
Grüße aus dem schönen NRW
Stefan

daolix

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.

Stapi

Hallo Daolix

Bekomme auch mit "  " die Fehlermeldung >>> Datei nicht gefunden ???

Gruß Stefan
Grüße aus dem schönen NRW
Stefan

database

#14
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