Programm-Start mit RunProgram funktioniert nicht immer

Anfängerfragen zum Programmieren mit PureBasic.
OlderCoder
Beiträge: 134
Registriert: 18.03.2013 12:30
Wohnort: Bayerland
Kontaktdaten:

Programm-Start mit RunProgram funktioniert nicht immer

Beitrag von OlderCoder »

Hallo allerseits,

ich bin dabei, mir eine Alternative zum Windows-Startmenü zu programmieren, da ich damit nicht zufrieden bin.
Links/Programm-Files/Dateien über Drag&Drop in ein Fenster ziehen und dort anordnen und vorbereiten.
Ein Klick auf den Link im Fenster und das Programm startet über RunProgram.
Das funktioniert auch in vielen Fällen bisher schon ganz gut, aber leider nicht in allen.

a)
Bei Halo hab ich festgestellt, dass das Programm beim Start verschiedene Dateien braucht und diese, wenn von einem PureBasic-Programm gestartet, grundsätzlich nicht in seinem eigenen Ordner, sondern im Ordner sucht, in dem sich das PB-Programm befindet. Wie ich das lösen kann, weiß ich noch nicht.

b)
Es gibt Programme, die als Administrator gestartet werden müssen.
Aber der Tipp von Microsoft http://technet.microsoft.com/en-us/libr ... K_examples
mit dem Parameter " runas/user:<EigenerUsername>\administrator cmd" hat nicht mal bei einer normalen Verknüpfung funktioniert.

c)
Gefunden hab ich ansonsten bisher im folgenden aufgelistete Problem-Programme.
Mit den Beschreibungen, was ich versucht habe, hoffe ich, dass vielleicht daraus ein Hinweis zu erkennen ist, wo das Problem liegt. Allerdings ist es sehr verwirrend und nervend, dass die Ergebnisse nicht immer gleich sind.

c1)
Crazy Machines Neue Herausforderungen:
Fehler: "...funktioniert nicht mehr"

c2)
Crazy Machines 2 Demo:
Fehler: "...funktioniert nicht mehr"

In beiden Fällen versucht:
1) Start aus meinem Programm tut nicht
2) Link aus meinem Programm kopiert in das Windows-Explorer-Fenster tut nicht
3) Windows-Verknüpfung tut
4) Link aus der Verknüpfung kopiert in das Windows-Explorer-Fenster tut
5) Link aus meinem Programm kopiert in das Windows-Explorer-Fenster tut jetzt (!)
6) Start aus meinem Programm tut immer noch nicht
7) Link aus meinem Programm kopiert in das Windows-Explorer-Fenster tut jetzt sofort

Später andere Ergebnisse:
Bei Craziy Machines NH:
3) tut auch nicht mehr, 4) ebenfalls nicht mehr.

Später andere Ergebnisse:
Bei Craziy Machines 2 Demo:
2) tut auf Anhieb


c3)
Biathlon 2009 Demo:
Fehler: "could not read packfile"

Versucht:
1) Start aus meinem Programm tut nicht
2) Link aus meinem Programm kopiert in das Windows-Explorer-Fenster tut nicht
3) Windows-Verknüpfung tut
4) Link aus der Verknüpfung kopiert in das Windows-Explorer-Fenster tut nicht


c4)
Gothic 3:
Fehler: "Configfile missing. Can't open configfile, see zSpy log for more details"; danach "..funktioniert nicht mehr."
Das log hab ich nicht gefunden, sonst hätte ich dort nachgeschaut.

Versucht:
1) Start aus meinem Programm tut nicht
2) Windows-Verknüpfung tut
3) Link aus der Verknüpfung kopiert in das Windows-Explorer-Fenster tut nicht


c5)
MazLite 2:
Fehler: "Can't compile script"

Versucht:
1) Start aus meinem Programm tut nicht
2) Link aus meinem Programm kopiert in das Windows-Explorer-Fenster tut nicht
3) Windows-Verknüpfung tut
4) Link aus der Verknüpfung kopiert in das Windows-Explorer-Fenster tut nicht


Alle Links sind beim Anschauen Identisch.
Keine Parameterübergabe, keine Kompabilitäts-Einstellungen in der Verknüpfung.
Sicherheitshalber stichprobenartigern Test in PureBasic mit Bool() gemacht, ergibt ebenfalls Gleichheit.

Ich möchte, dass alle Verknüpfungen funktionieren, dass das Programm zuverlässig funktioniert, sonst macht das ganze für mich wenig Sinn.
So wie es aussieht, ist der Befehl RunProgram kein vollwertiger Ersatz zum Programme starten über den normalen Windows-Weg.
(Die alternative Methode über die Adresszeile im Windows-Explorer verhält sich ähnlich unzureichend wie PureBasic.)

Was kann ich tun?

System: Windows 7 64 Bit

Gruß
OlderCotder
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Programm-Start mit RunProgram funktioniert nicht immer

Beitrag von RSBasic »

OlderCoder hat geschrieben:Bei Halo hab ich festgestellt, dass das Programm beim Start verschiedene Dateien braucht und diese, wenn von einem PureBasic-Programm gestartet, grundsätzlich nicht in seinem eigenen Ordner, sondern im Ordner sucht, in dem sich das PB-Programm befindet. Wie ich das lösen kann, weiß ich noch nicht.
Könnte es sein, dass du den Parameter "Arbeitsverzeichnis$" vergessen hast? Ermittle den Zielpfad und übergebe es als Arbeitsverzeichnis mit, dann kann die eben aufgerufene Anwendung die eigenen Dateien finden.
OlderCoder hat geschrieben:Es gibt Programme, die als Administrator gestartet werden müssen.
Aber der Tipp von Microsoft http://technet.microsoft.com/en-us/libr ... K_examples
mit dem Parameter " runas/user:<EigenerUsername>\administrator cmd" hat nicht mal bei einer normalen Verknüpfung funktioniert.
Ermittle den Zielpfad und versuch es damit und nicht den Pfad zur Verknüpfung. Vielleicht liegt es daran. Oder es fehlen Anführungszeichen, falls im Pfad ein Leerzeichen vorhanden ist.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
OlderCoder
Beiträge: 134
Registriert: 18.03.2013 12:30
Wohnort: Bayerland
Kontaktdaten:

Re: Programm-Start mit RunProgram funktioniert nicht immer

Beitrag von OlderCoder »

Vielen Dank für Deine blitzschnelle Hilfe und den sehr nützlichen Tipp!!!

Exakt das war das Problem.
Ich hab jetzt zusätzlich als Arbeitsverzeichnis einfach denselben Pfad ohne die exe übergeben, und somit sind meine aufgelisteten Probleme a) und c1)-c5) Geschichte.
Daran hatte ich gar nicht gedacht.

Bleibt noch das Problem b) mit dem Starten als Administrator über den Befehl RunProgram.
Das ist wohl eher kein direktes PureBasic-Problem, da ich Parameter wie auch bei Windows-Verknüpfungen vermutlich direkt mit dem Programmpfad übergeben kann, auch wenn ich es noch nicht probiert habe.
Aber welche Paramter ich in diesem Fall genau übergeben soll, weiß ich nicht. Vielleicht hast Du dafür auch eine Lösung.
Edit: Ich hatte den zweiten Teil Deiner Antwort übersehen, sorry. Werde ich mal probieren!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Programm-Start mit RunProgram funktioniert nicht immer

Beitrag von ts-soft »

Code: Alles auswählen

Procedure RunProgrammAsHomer(ProgramName$, Parameters$ = "", WorkingDirectory$ = "")
  Protected shExecInfo.SHELLEXECUTEINFO
  
  With shExecInfo
    \cbSize = SizeOf(SHELLEXECUTEINFO)
    \lpVerb = @"runas"
    \lpParameters = @Parameters$
    \lpFile = @ProgramName$
    \lpDirectory = @WorkingDirectory$
    \nShow = #SW_NORMAL
  EndWith
  
  ProcedureReturn ShellExecuteEx_(shExecInfo)
EndProcedure

RunProgrammAsHomer("notepad.exe") 
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
OlderCoder
Beiträge: 134
Registriert: 18.03.2013 12:30
Wohnort: Bayerland
Kontaktdaten:

Re: Programm-Start mit RunProgram funktioniert nicht immer

Beitrag von OlderCoder »

Super, danke ts-soft!
Das funktioniert tatsächlich.
Jetzt sind alle Startprobleme erst mal beseitigt.
Bei Euch wird man wirklich geholfen :-)

Was bedeutet eigentlich das @? Möchte ich schon länger wissen, und in der PB-Hilfe hab ich bisher nichts dazu gefunden.


Toll in diesem Forum übrigens, dass der eigene Post nicht sofort losgeschickt wird, wenn inzwischen ein anderer Post eingegangen ist. Das funktioniert in den wenigsten Foren.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Programm-Start mit RunProgram funktioniert nicht immer

Beitrag von ts-soft »

OlderCoder hat geschrieben:Das funktioniert tatsächlich.
Homer hat immer alle erforderlichen Rechte :mrgreen:
OlderCoder hat geschrieben:Was bedeutet eigentlich das @? Möchte ich schon länger wissen, und in der PB-Hilfe hab ich bisher nichts dazu gefunden.
Das @ gibt die Adresse einer Variable (oder eines Strings) wieder.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Programm-Start mit RunProgram funktioniert nicht immer

Beitrag von Kiffi »

<OT>
RunProgrammAsChuckNorris() fände ich besser. <)
</OT>
a²+b²=mc²
OlderCoder
Beiträge: 134
Registriert: 18.03.2013 12:30
Wohnort: Bayerland
Kontaktdaten:

Re: Programm-Start mit RunProgram funktioniert nicht immer

Beitrag von OlderCoder »

Es wird garantiert noch nötig sein, das eine oder andere Programm im Kompatibilitätsmodus zu starten.
Geht das auch über das Windows-API, und wenn ja wie?
(In der tollen Windows-API-Library von RSBasic hab ich bisher nichts dazu gefunden, wegen dem Admin vorher auch nicht.)
OlderCoder
Beiträge: 134
Registriert: 18.03.2013 12:30
Wohnort: Bayerland
Kontaktdaten:

Re: Programm-Start mit RunProgram funktioniert nicht immer

Beitrag von OlderCoder »

Ich möchte nochmal nachhaken.
Weiß jemand, wie ich mit RunProgram ein Programm in einer Kompatibilitätsmodus-Einstellung starten kann?
Z.B. Windows XP SP3 o.ä.Ich hab bisher dazu nichts gefunden.
Antworten