Datei mit bestimmten Programm öffnen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

ts-soft hat geschrieben: Ich hab eine Exe umbenannt, von test.exe in test und konnte test mit RunProgram starten.
Vielleicht liegt das an Vista?
Bei mir klappts nicht.
Er frägt mich nur mit was ich es öffnen möchte .... (Vista)
EDIT
Könnte man nicht etwas basteln , das die Datei ohne Endung in eine Datei mit .exe umschreibt ?

Das Tool wird dann gestartet wenn eine Datei ohne Endung eine exe üblichen Header hat.
Zuletzt geändert von X360 Andy am 26.02.2009 15:01, insgesamt 2-mal geändert.
Olaf.Renns
Beiträge: 27
Registriert: 26.02.2009 10:11

Beitrag von Olaf.Renns »

BAPI's fallen aus, da eine BAPI für diese Geschichte komplett neu geschrieben werden muss. Zudem benötigt man hier seine SAP Anmeldung und die Übergabe der Benutzerdaten, die bei uns auf dem Server nicht ermittelt werden dürfen (Keine Programme oder anwendungsähnliche Scripts dürfen benutzerspezifische Informationen auf einem Serversystem ermittelt. Lediglich das Verarbeiten ist erlaubt). Die Batch-Input Mappen mit ausführbaren Parameter arbeiten mit der Serveranmeldung des User, was einer anderen Schiene entspricht.

Der Server wird zur einfachen Verabeitung als Netztwerklauf erstellt. Somit haben wir vollen Zufriff auf das Verzeichnis des SAP Windows Servers, aber halt nur auf das Verzeichnis der Batch-Input Mappen mit ausführbaren Parameter. Alle anderen Verzeichnisse dürfen bzw. können wir nicht zugreifen.

Bei den Batch-Input Mappen mit ausführbaren Parameter handelt es sich um 100%ige Exe, da man diese auch kopieren und auf einem SAP unabhängigen PC ausführen kann. Das Verhalten entspricht ganz normal dem Verhalten in einem lokalen Ordner, da das Verzeichnis ja als Netzlaufwerk eingestellt wurde.
Ich hab eine Exe umbenannt, von test.exe in test und konnte test mit RunProgram starten.
Vielleicht liegt das an Vista?
Also bei mir tut sich unter Vista nichts. Das gleiche Verhalten habe ich auch wenn ich beispielsweise eine DLL erstelle und diese ohne Dateiendung mittel OpenLibary öffnen möchte. Ich bekomme nur Zugriff, wenn die Datei eine eindeutige Kennung hat.

Vielleicht wäre das Laden der EXE-Daten in den Speicher und dem manuellen Starten eine Möglichkeit? Wobei mir wieder eventuelle Sicherheitsvorkehrungen und Inkompatibilitätsprobleme ein bissle Sorgen machen würden.
Benutzeravatar
bembulak
Beiträge: 228
Registriert: 13.12.2005 16:34
Wohnort: Österreich

Beitrag von bembulak »

Kannst du dir nicht von X:\USE\....\ die Datei einfach in deinen Temp-Ordner kopieren (per PB), umbenennen (per PB) und dann einfach starten (per PB)?
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Naja, was Windows beim Laden einer .exe tut ist recht komplex.

Aber schon ziemlich merkwürdig das Vista da rummuckt. Das man sogar keine Module laden kann, wenn sie net mit .dll enden. Ich meine es gibt hunderte Programme, wenn nicht tausende, die Plugin-Systeme mit dll's haben, denen aber ne andere Endung geben. Die laufen ja dann alle net auf Vista. :o

Vieleicht gibts dafür aber auch ne Einstellung im System.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Olaf.Renns
Beiträge: 27
Registriert: 26.02.2009 10:11

Beitrag von Olaf.Renns »

Kannst du dir nicht von X:\USE\....\ die Datei einfach in deinen Temp-Ordner kopieren (per PB), umbenennen (per PB) und dann einfach starten (per PB)?
Wäre ne Möglichkeit, aber es sind einfach auch recht viele und große Dateien, die nicht nur beim Abspielen sondern auch beim Kopieren viel Arbeitsspeicher benötigen, zudem hatte ich das ja schon in meinem ersten Eröffnungsthread ausgeschlossen.
Naja, was Windows beim Laden einer .exe tut ist recht komplex.

Aber schon ziemlich merkwürdig das Vista da rummuckt. Das man sogar keine Module laden kann, wenn sie net mit .dll enden. Ich meine es gibt hunderte Programme, wenn nicht tausende, die Plugin-Systeme mit dll's haben, denen aber ne andere Endung geben. Die laufen ja dann alle net auf Vista.
Wenn man eine DLL beispielsweise in DDR umwandelt, dann gehts auch mit OpenLibary:
If OpenLibrary(0,"2.ddr")
CallFunction(0, "MyFunction")
CloseLibrary(0)
EndIf
Nur ohne Dateiendung gehts nicht. Vielleicht ist das nen Ansatz.... Muss mal mit dem Entwickler talken, ob man die Dateien nicht einfach in ein anderes Format erstellen kann. Jemand eine Idee, welche Dateiendung man da verwenden sollte :mrgreen:
Olaf.Renns
Beiträge: 27
Registriert: 26.02.2009 10:11

Beitrag von Olaf.Renns »

Guten morgen,

nach Rücksprache haben wir es nun so gelöst, da wir den batch-Mappen einfach eine Dummy-Dateiendung mitgeben. Wir haben uns für "*.a" entschieden. Dennoch finde ich es merkwürdig, das OpenLib und Runprogram ohne Dateiendung ein Problem haben, obwohl beliebig andere Dateiendung immer richtig intepretiert werden (E.g.: Nennt man eine "*.exe" Datei in "*.PureBasicIstEchtSpitze" wird sie trotzdem als EXE ausgeführt. Scheinbar wird hier schon mit dem FileHeader gearbeitet.)
Little John

Beitrag von Little John »

Jemand eine Idee, welche Dateiendung man da verwenden sollte :mrgreen:
Da es EXE-Dateien sind ... wie wär's mit EXE? :mrgreen:
Dennoch finde ich es merkwürdig, das OpenLib und Runprogram ohne Dateiendung ein Problem haben,
Zumindest in Bezug auf ausführbare Dateien könnte es mit folgendem zu tun haben:
Wenn man unter Windows z.B. den Befehl "PureBasic" startet, dann sucht Windows im aktuellen Verzeichnis, in Verzeichnissen die im PATH sind und ich weiß nicht wo sonst noch nach einer Datei namens PureBasic.exe oder PureBasic.cmd oder PureBasic.bat oder ...(?). Dabei gibt es Präferenzen, wenn also z.B. sowohl PureBasic.exe als auch PureBasic.cmd gefunden werden, wird meines Wissens die EXE bevorzugt. Diese Datei wird dann ausgeführt.
Wenn es allerdings weder eine Datei PureBasic.exe noch PureBasic.cmd noch PureBasic.bat usw. gibt, dann führt der Befehl "PureBasic" nicht zum Erfolg, weil dieser Befehl eben nicht tatsächlich eine 100% gleichnamige Datei sucht.
Wenn man aber eine Datei mit Erweiterung aufruft, dann wird dieser Name zu 100% so genommen wie man ihn eingegeben hat.
obwohl beliebig andere Dateiendung immer richtig intepretiert werden (E.g.: Nennt man eine "*.exe" Datei in "*.PureBasicIstEchtSpitze" wird sie trotzdem als EXE ausgeführt.
Das Beispiel stimmt, die Verallgemeinerung nicht ganz. Beliebige andere dem System unbekannte Dateierweiterungen werden wie von Dir beschrieben interpretiert (ich vermute dass sich dieses Verhalten durch Registry-Einstellungen ändern lässt). Wenn Du allerdings einer EXE-Datei die Erweiterung TXT gibts und dann doppelklickst, wird etwas anderes passieren.

Gruß, Little John
Antworten