RunProgram() Probleme

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
zoidberg
Beiträge: 219
Registriert: 06.12.2004 23:15
Computerausstattung: Acer 6530
Mit Ubuntu 9.04 64 Bit als Hauptsystem und
Windows Vista 32Bit Home Premium zum spielen.
Wohnort: GM
Kontaktdaten:

RunProgram() Probleme

Beitrag von zoidberg »

Hallo!

Ich wollte jetzt die Konsolenausgabe eines Befehls abgreifen um die Angaben weiterverwenden zu können. Das gelingt mir nicht.
Nun hatte ich die Idee das ganze in eine Textdatei umzuleiten
Doch es klappt nicht. Die Zeile die ich mit RunProgram() starte ist identisch mit der, wo ich in der Konsole eine Textdatei mit den Exif Informationen erhalte. Aber es wird aus meinem Programm heraus keine Datei erzeugt.

Kennt sich jemand damit aus?

Code: Alles auswählen

name.s = "identify"
parameter.s = " -format %[EXIF:*] IMG_3646.JPG > info.txt"
MessageRequester ("info", name + parameter)
RunProgram(name, parameter, "/home/steffen/test")
End 
Danke!

Gruß, Steffen
Bild
walker
Beiträge: 278
Registriert: 29.08.2004 18:39
Wohnort: Bayern

Beitrag von walker »

Hi,

da Du die Parameter für das Programm identify angibst, ist eine Shell-Umleitung mit > NICHT gleichzeitig möglich... der komplette String wird an das aufgerufene Programm gegeben ... ohne eine shell (und nur diese versteht das >) :shock:

Hier musst Du ein paar Zeilen mehr investieren, um das gewünschte Ergebnis zu bekommen :D (habe das für meinen Rechner angepasst; Dateiname austauschen und ggf. das Directory wieder ändern)
(und ggf. auch die Repeat Schleife in eine While/Wend ändern)

Code: Alles auswählen

name.s = "identify"
parameter.s = "-format %[EXIF:*] dsc03489.jpg"
; MessageRequester ("info", name + parameter)
mypgm= RunProgram(name, parameter, ".",  #PB_Program_Open|#PB_Program_Read)

Repeat
    Debug ReadProgramString(mypgm)
Until Not ProgramRunning(mypgm)

End 
Den Debug output kannst Du natürlich in eine Datei schreiben oder direkt verwenden... wie auch immer :wink:
weitere Info's findest Du in der PB-Hilfe (unter RunProgramm)
Benutzeravatar
zoidberg
Beiträge: 219
Registriert: 06.12.2004 23:15
Computerausstattung: Acer 6530
Mit Ubuntu 9.04 64 Bit als Hauptsystem und
Windows Vista 32Bit Home Premium zum spielen.
Wohnort: GM
Kontaktdaten:

Beitrag von zoidberg »

Hallo walker!

Ich hatte es vorher auch mit #PB-Program_Read versucht. war aber gescheitert. So kam mir die Idee mit der Textdatei.

Da muss man aber erst mal drauf kommen das der nicht alles weiterverarbeiten kann.

Dennoch finde ich es sehr praktisch, daß man die Exif Informationen so einfach bekommt, da die anderen Lösungen für mich zu kompliziert waren.

Ich möchte ein kleines Frontend für Image Magick machen, damit ich meine Bilder verkleinern, umbenennen und mit Datumsstempel usw. versehen kann. Ich hatte sowas mal im Netz gefunden, aber finde es nicht mehr.

Nun möchte ich eine eigene Version machen.

Weißt Du ob es diese ImageMagick Funktionalität auf Konsolenebene auch für Windows gibt? Also ob ich die fertige Version für Linux und Windows veröffentlichen kann?

Vielen Dank auf jeden Fall für Deine Hilfe!

Gruß, Steffen
Bild
walker
Beiträge: 278
Registriert: 29.08.2004 18:39
Wohnort: Bayern

Beitrag von walker »

Hallo,

ja, das gibt es auch für Windows... http://www.imagemagick.org/script/binary-releases.php (etwas weiter unten auf der Seite...) und auch für MacOS X (das solltest Du nicht vergessen ...) Dürfte also kein Problem sein, ein Cross-Plattform Tool zu schreiben.

Bin mal auf die 1. Version gespannt :wink:

Viele Grüße
Benutzeravatar
zoidberg
Beiträge: 219
Registriert: 06.12.2004 23:15
Computerausstattung: Acer 6530
Mit Ubuntu 9.04 64 Bit als Hauptsystem und
Windows Vista 32Bit Home Premium zum spielen.
Wohnort: GM
Kontaktdaten:

Beitrag von zoidberg »

Ich bin auch gespannt.

Aber theorisch ist es doch so, daß ich wenn man per Dateiauswahldialog den Pfad angibt und ich keine feste Vorgabe wie jetzt (/home/steffen/test) verwende, dann ist der Code doch für alle Plattformen gleich ,oder?

Es muss halt vorher mit der "ich weiß nicht wie die jetzt heißt" Funktion zum Prüfen ob es sich um ein installiertes Programm handelt geschaut werden ob Imagemagick installiert ist.

Ich werds erst mal so für Linux machen weil ich es ja auch dort verwenden möchte.

Erwarte aber nichts großes. Das Frontend wird im Zweifelsfall nur die Basisfunktionen enthalten.

Für KDE gibts das ja schon als Plugin für den Dateimanager. Da kannste das einfach im Menü angeben was Du mit den Bildern machen willst.
Hab es aber für XCFE oder Gnome noch nie gesehen.

Ich bin auf jeden Fall Dankbar für Deine Hilfe!

Gruß, Steffen
Bild
walker
Beiträge: 278
Registriert: 29.08.2004 18:39
Wohnort: Bayern

Beitrag von walker »

... nicht nur theoretisch :wink:
Einfach keine festen Pfadangaben und nur in PB vorhandene Befehle (keine Api) und schon sollte es funktionieren...

EDIT:

hier eine kleine Funktion, um festzustellen, ob das Programm installiert ist:

Code: Alles auswählen

CompilerIf #PB_Compiler_OS = #PB_OS_Windows
    pgm.s = "identify.exe"
CompilerEndIf
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
    pgm.s = "identify"
CompilerEndIf
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
    pgm.s = "identify" ;<<- dies muss entsprechend geändert werden!!!! habe keinen zugriff auf Mac OS X
CompilerEndIf

mypgm = RunProgram(pgm, "-help", "", #PB_Program_Open | #PB_Program_Read)

If FindString(ReadProgramString(mypgm), "ImageMagick", 1)
    Debug "Programm ist installiert"
Else
    Debug "Bitte ImageMagick installieren!"
EndIf
zu prüfen ist auch noch, ob in allen 3 OS die 1. Ausgabezeile den Namen und die Version enthält ... denke aber, das ist so..
Antworten