Unterschiedliches verhalten runshell() 32bit 64bit ?
Moderator: Moderatoren
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Unterschiedliches verhalten runshell() 32bit 64bit ?
Hallo,
beim testen habe ich ein kleines Phänomen entdeckt.
Runshell verhält sich anscheinend unterschiedlich bei 32 und 64 bit. Kann das sein?
Unter 32bit ok, mit 64bit kein Entpacken.
Der Aufruf:
cmdline:="/C " + LiniFile:ReadString("System","PRISMApfad", "\PRISMA") +"32\funzip " + substr(getenv("COMSPEC"),1,3)+'_PRISMA\efpd.gz >' + substr(getenv("COMSPEC"),1,3)+'_PRISMA\ef.pd'
RUNSHELL( cmdline,"cmd.exe",.F.,.T.)
Das Programm funzip.exe läuft auch auf 64 Bit. Führe ich den Befehl in der Dosbox direkt aus funktioniert es
funzip efpd.gz > ef.pd
Gruß Stefan
beim testen habe ich ein kleines Phänomen entdeckt.
Runshell verhält sich anscheinend unterschiedlich bei 32 und 64 bit. Kann das sein?
Unter 32bit ok, mit 64bit kein Entpacken.
Der Aufruf:
cmdline:="/C " + LiniFile:ReadString("System","PRISMApfad", "\PRISMA") +"32\funzip " + substr(getenv("COMSPEC"),1,3)+'_PRISMA\efpd.gz >' + substr(getenv("COMSPEC"),1,3)+'_PRISMA\ef.pd'
RUNSHELL( cmdline,"cmd.exe",.F.,.T.)
Das Programm funzip.exe läuft auch auf 64 Bit. Führe ich den Befehl in der Dosbox direkt aus funktioniert es
funzip efpd.gz > ef.pd
Gruß Stefan
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Unterschiedliches verhalten runshell() 32bit 64bit ?
Solange das kein 16-Bit-Programm ist, sollte es funzen. Ändere doch mal den dritten Parameter in .T., dann kannst Du sehen, was im CMD-Fenster abläuft.
Herzlich,
Tom
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Unterschiedliches verhalten runshell() 32bit 64bit ?
ich würde das in eine CMD Datei packen (z.B. auch dynamisch) und diese aufrufen. Dort kannst du Pause etc. einbauen und die Fehlermeldung lesen.
Es könnte z.b. am Pfad liegen, die runshell() cmd box hat nicht zwingend die gleichen Rechte / Pfade wie die von dir manuell geöffnete.
Dazu wurde was über den START Befehl in der Doku geschrieben, vermutlich bei runshell ...
Es könnte z.b. am Pfad liegen, die runshell() cmd box hat nicht zwingend die gleichen Rechte / Pfade wie die von dir manuell geöffnete.
Dazu wurde was über den START Befehl in der Doku geschrieben, vermutlich bei runshell ...
Gruß
Hubert
Hubert
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Unterschiedliches verhalten runshell() 32bit 64bit ?
Habe den dritten Parameter auf .T. geändert.
RUNSHELL( cmdline,"cmd.exe",.T.,.T.)
...und damit funktioniert es auch auf dem 64-Bit Rechner.
Ich frag mich zwar wieso, aber......
Gruß Stefan
RUNSHELL( cmdline,"cmd.exe",.T.,.T.)
...und damit funktioniert es auch auf dem 64-Bit Rechner.
Ich frag mich zwar wieso, aber......
Gruß Stefan
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Unterschiedliches verhalten runshell() 32bit 64bit ?
Ich versteh's nicht mehr....
Windows 32-Bit
RUNSHELL( cmdline,"cmd.exe",.T.,.T.) -> funktioniert nicht
RUNSHELL( cmdline,"cmd.exe",.F.,.T.) -> funktioniert
Windows 64-Bit
RUNSHELL( cmdline,"cmd.exe",.F.,.T.) -> funktioniert nicht
RUNSHELL( cmdline,"cmd.exe",.T.,.T.) -> funktioniert
Kann man irgendwie abfrage ob 32 oder 64 Bit?
Gruß Stefan
Windows 32-Bit
RUNSHELL( cmdline,"cmd.exe",.T.,.T.) -> funktioniert nicht
RUNSHELL( cmdline,"cmd.exe",.F.,.T.) -> funktioniert
Windows 64-Bit
RUNSHELL( cmdline,"cmd.exe",.F.,.T.) -> funktioniert nicht
RUNSHELL( cmdline,"cmd.exe",.T.,.T.) -> funktioniert
Kann man irgendwie abfrage ob 32 oder 64 Bit?
Gruß Stefan
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Unterschiedliches verhalten runshell() 32bit 64bit ?
Es gibt einige offene oder erst in der 2.0 geschlossene PDRs zu RunShell, zum Beispiel diesen:
http://www.alaska-software.com/scripts/ ... PDRID=6501
Hast Du da mal drüber-/durchgeschaut?
http://www.alaska-software.com/scripts/ ... PDRID=6501
Hast Du da mal drüber-/durchgeschaut?
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Unterschiedliches verhalten runshell() 32bit 64bit ?
JA
Code: Alles auswählen
FUNCTION Is64Bit()
RETURN IF( FILE( "C:\WINDOWS\SysWOW64","D" ), .T., .F. )
könntest du bitte den cmdline String posten wie der aufgelöst aussiehtCode: Alles auswählen
cmdline := "/C " + LiniFile:ReadString("System","PRISMApfad", "\PRISMA") +"32\funzip " + substr(getenv("COMSPEC"),1,3)+'_PRISMA\efpd.gz >' + substr(getenv("COMSPEC"),1,3)+'_PRISMA\ef.pd'
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Unterschiedliches verhalten runshell() 32bit 64bit ?
in den Umgebungsvariablen ist das hinterlegt:
Code: Alles auswählen
NUMBER_OF_PROCESSORS=4
OS=Windows_NT
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=2a07
Gruß
Hubert
Hubert
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Unterschiedliches verhalten runshell() 32bit 64bit ?
guten Morgen,
der String, vereinfacht aufgelöst:
cmdline := "/C FUNZIP.EXE efpd.gz > ef.pd"
Gruß Stefan
der String, vereinfacht aufgelöst:
cmdline := "/C FUNZIP.EXE efpd.gz > ef.pd"
Gruß Stefan
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Unterschiedliches verhalten runshell() 32bit 64bit ? [ERLEDIGT]
Ich setze nun die Version von Jimmy ein, leicht abgewandelt.
Danke!
Funktioniert für meine Zwecke.
@Tom: PDR hab ich mir angesehen, die Lösungsvorschläge funktionieren bei mir leider nurteilweise.
Trotzdem vielen Dank für den Hinweis.
Gruß Stefan
Danke!
Code: Alles auswählen
FUNCTION Is64Bit()
RETURN IF( FILE( GetEnv( "HOMEDRIVE") + "\WINDOWS\SysWOW64","D" ), .T., .F. )
@Tom: PDR hab ich mir angesehen, die Lösungsvorschläge funktionieren bei mir leider nurteilweise.
Trotzdem vielen Dank für den Hinweis.
Gruß Stefan
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Unterschiedliches verhalten runshell() 32bit 64bit ?
Du könntest ja den Aufruf auch direkt über die Windows API absetzten ohne den Umweg der Alaska Runshell Funktion.
Ich verwende dazu schon lange folgende Funktion. Damit bist du selbst "Herr der Parameter"
Gruss Carlo
Ich verwende dazu schon lange folgende Funktion. Damit bist du selbst "Herr der Parameter"
Code: Alles auswählen
Function NewRunShell(cFile, cParameters, cDir, nMode, oDlg)
local sw_Mode := 1
local cStartDir := iif(empty(cDir), CurDir(), cDir)
local nWinMode := iif(nMode == NIL, sw_Mode, nMode)
local nHandle := iif(oDlg == NIL, AppDesktop():GetHWnd(), oDlg:GetHWnd())
local nError
if !file(cFile)
msgbox( cFile+" ist nicht vorhanden.Start nicht m”glich","Shell32 ExecuteA")
else
nError := DllCall("Shell32.dll", DLL_STDCALL, "ShellExecuteA", ;
nHandle, "open", cFile, cParameters, cStartDir, nWinMode)
if nError < 32
msgbox("Beim Start von "+cFile+" ist ein Fehler aufgetreten. Code:"+str(nError,3),"Shell32 ExecuteA")
endif
endif
return (nError)
Valar Morghulis
Gruss Carlo
Gruss Carlo