Komunikation mit anderen Programmen (Process-Library)

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Abraham0607
Beiträge: 32
Registriert: 16.01.2012 16:38
Kontaktdaten:

Komunikation mit anderen Programmen (Process-Library)

Beitrag von Abraham0607 »

Hi,

ich hab versucht was mit der "Process"-Library zu machen, aber das klappt irgendwie nicht...
Kann mir jemand sagen was ich falsch gemacht habe?

Code: Alles auswählen

program=RunProgram("C:\windows\system32\cmd.exe","","",#PB_Program_Open | #PB_Program_Read | #PB_Program_Write)
If AvailableProgramOutput(program)
  WriteProgramStringN(program,"cmd")
  Delay(2000)
EndIf
End
Schon mal im Vorraus

Danke
MfG Abraham

====================
Virtual Cookbook
Benutzeravatar
Abraham0607
Beiträge: 32
Registriert: 16.01.2012 16:38
Kontaktdaten:

Antwort?

Beitrag von Abraham0607 »

Will mir denn wirklich keiner helfen?
MfG Abraham

====================
Virtual Cookbook
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: Komunikation mit anderen Programmen (Process-Library)

Beitrag von ts-soft »

AvailableProgramOutput() ist schon mal total verkehrt, da solltest Du in der Hilfe nochmal nachlesen.
Feste Pfade sollte man auch nicht verwenden, siehe folgendes Beispiel.
Ausserdem sollte man so geöffnete Programme auch immer schliessen, ansonsten bleibt Müll im Speicher.
EnabelExplicit möchte ich Dir auch ans Herz legen, auch wenn das in diesem Falle nicht geholfen hätte.

Code: Alles auswählen

EnableExplicit

Define program = RunProgram(GetEnvironmentVariable("COMSPEC"), "", "",#PB_Program_Open | #PB_Program_Read | #PB_Program_Write)
If ProgramRunning(program)
  WriteProgramStringN(program, "cmd")
  Delay(2000)
EndIf
CloseProgram(program)
End
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
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Komunikation mit anderen Programmen (Process-Library)

Beitrag von NicTheQuick »

Dein Beispiel macht so keinen Sinn. Was willst du eigentlich tun? Vermutlich kann man dein Problem besser lösen, wenn du sagst, was du genau vor hast.
Benutzeravatar
Abraham0607
Beiträge: 32
Registriert: 16.01.2012 16:38
Kontaktdaten:

Re: Komunikation mit anderen Programmen (Process-Library)

Beitrag von Abraham0607 »

was macht denn GetEnvironmentVariable()? aus der hilfe werd' ich nicht schlau
MfG Abraham

====================
Virtual Cookbook
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: Komunikation mit anderen Programmen (Process-Library)

Beitrag von ts-soft »

Es gibt unter Windows (unter Linux auch) sogenannte Umgebungsvariablen, die kann man damit auslesen.
Es gibt noch viele andere Möglichkeiten Pfade zu ermitteln, aber in diesem Falle ist dieses Vorgehen das beste. Jedenfalls sind
fixe Pfade unbedingt zu vermeiden, nicht jedes "Windows"-Verzeichnis heißt auch "Windows" :wink:
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
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Komunikation mit anderen Programmen (Process-Library)

Beitrag von RSBasic »

Er liest die Umgebungsvariable aus, die von Programmen und von Windows bereitgestellt werden. Beispielsweise mit "appdata" bekommst du den Pfad zum Anwendungsdaten-Verzeichnis, um beispielsweise deine eigenen Einstellungen dort speichern zu können. Sonst weißt du nicht, wohin du überhaupt deine Einstellungen speichern kannst. Deshalb gibt es Umgebungsvariablen. Und mit "comspec" bekommst du den Pfad zur Konsolen-Anwendung "cmd.exe".
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
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: Komunikation mit anderen Programmen (Process-Library)

Beitrag von ts-soft »

RSBasic hat geschrieben:Und mit "comspec" bekommst du den Pfad zur Konsolen-Anwendung "cmd.exe".
Oder zu command.com, wenn das OS bereits etwas älter ist :mrgreen:
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
Abraham0607
Beiträge: 32
Registriert: 16.01.2012 16:38
Kontaktdaten:

Re: Komunikation mit anderen Programmen (Process-Library)

Beitrag von Abraham0607 »

danke für die hilfe leute!!!

abraham
MfG Abraham

====================
Virtual Cookbook
Benutzeravatar
Abraham0607
Beiträge: 32
Registriert: 16.01.2012 16:38
Kontaktdaten:

Re: Komunikation mit anderen Programmen (Process-Library)

Beitrag von Abraham0607 »

wenn ich jetzt mit GetEnvironmentVariable() eine batch ausführen möchte ("start.bat").
Was muss ich dann in die klammern schreiben?
MfG Abraham

====================
Virtual Cookbook
Antworten