Seite 2 von 2
Verfasst: 30.04.2008 00:24
von tobe
ich hab die notepad.exe als testprogramm benutzt, also so:
Code: Alles auswählen
Case Button_1
;ein Programm starten
Ergebnis = RunProgram("notepad.exe", "", "", #PB_Program_Open)
damit hat es funktioniert.
ts-soft hat recht, es gibt saubere wege um programme zu beenden, aber es wird dann natürlich auch etwas komplizierter

Verfasst: 30.04.2008 00:50
von Adler
Ich wollte eigentlich auch nur Programme schließen die ich offiziell auch selber geöffnet habe.
Das Programm Jägermeister ist eine Art Internet-Radio Player der den ganz normalen Beenden Button (X) hat. Also dachte ich das ich es auch wieder einfach über eine PB-Maske schließen kann.
Es sollten keine System interne Programme sein, wie zum Bsp. der Task-Manager oder so etwas ähnliches. Wollte es eigentlich auch nur für meinen
Rechner, denn so weit bin ich mit PB noch nicht. Immer schön eins nach dem anderen dachte ich mir.
Trotzdem vielen Dank,

auch für die Speichertricks usw.
Vieleicht gibt es ja doch noch eine Lösung
Den Befehl KillAllProcess() gibt es bei meiner Hilfe übrigens gar nicht! Komisch

Vieleicht liegt es an der PB Version! Habe PB 4.1 und die Hilfe-Datei ist auch von 4.1
Nur die Befehle KillThread(Thread) und KillProgram(Programm)
Verfasst: 30.04.2008 01:29
von ts-soft
Killallprozeß ist eine Funktion einer Userlib (PBOSL, siehe meine Signatur),
aber Deinen RadioPlayer solltest Du, da es eine GUI Anwendung ist, mit einer
Message (PostMessage_()) #WM_CLOSE schliessen.
Suchste mal nach Handle eines Programmes ermitteln (im API-Unterforum)
und dann kannste ja nochmal nachfragen, wenn Du nicht weiterkommst.
// edit
Evtl. reicht auch FindWindow_() um das Handle zu ermitteln
Da das Mainboard meines Winrechners gerade beim Händler ist, hab ich
keine WinAPI zur Hand um genauer nachzuschauen. Aber der eine oder
andere sollte Dir jetzt einen passenden Code posten können.
Verfasst: 03.05.2008 12:37
von Adler
Hallo, erst einmal Danke für den Tip mit der User-Lib!!
Ich habe jetzt erst einmal pbosl_win und die pbosl_examples heruntergeladen. Meine ev. Fragen sind, in welchen PB Ordner muß ich den jetzt die beiden pbosl_update Dateien kopieren (XML und EXE).
Und wie kann ich ev. die PBOSL-Hilfedatei mit der F1 Taste aufrufen, aus dem PB Programm heraus. Einfach so öffnen geht ja aber nicht mit der F1 Taste, da kommt die Hilfe für PB. Kann ich das irgentwie in PB konfigurieren das ich beide aufrufen kann.
Würde mich auch weiterhin auf Beispielcode freuen, wie schon gesagt, ich bin
ein blutiger Anfänger, aber PB ist spitze. Würde es gerne erlernen. In der F1 Hilfe ist aber auch kein richtiges Beispiel für KillAllProcess.
Mit der notepad.exe funktioniert es bei mir übrigens auch. Denke aber das es damit zu tun hat das sich die Datei im C:\Windows\system32 Ordner befindet. Mit der Solitaire.exe geht es bei mir wieder nicht, obwohl es auch ein Windows Programm ist, welches original installiert ist.
Danke für die bisherige Hilfe von euch allen

Verfasst: 03.05.2008 14:42
von tobe
um PBOSL zu installieren musst du den Help, PureLibraries, Residents und SubSystems ordner aus dem pbosl_win.zip in dein purebasic verzeichnis entpacken, die hilfe(F1) sollte dann auch funktionieren, xml und exe sind nicht notwendig, falls du die hilfe von PBOSL in deutsch haben willst musst du im help verzeichnis die PBOSL.chm mit der aus dem PBOSL_ger.zip ersetzen.
die Solitaire.exe gibt es bei mir nicht, mein solitär ist die sol.exe und mit der funktioniert das beenden bei mir auch
ich hab leider keinen plan was die ps_start.exe ist, somit ist es schwierig dein problem von hier aus zu lösen

ts-soft meinte was von RadioPlayer und im internet hab ich gelesen das es ein loader für eine radiosoftware ist.
da ein loader nur ein anderes prog startet ist es am einfachsten den loader zu umgehen und gleich die richtige exe zu starten die du dann auch wieder beenden kannst.
RunProgram liefert ja die PID eines programms als ergebnis, somit würde sich KillPID() von PBOSL als beste beendemethode anbieten (aber nur wenn du den loader umgehst).
wenn du KillAllProcess() verwenden willst musst du herrausfinden wie der name des prozesses von dem RadioPlayer ist dann kannst du den auch beenden (ohne den loader zu umgehen).
Verfasst: 13.05.2008 11:44
von Adler
Hallo, ich habe bei mir Vista auf dem Rechner drauf, deswegen heißt die Datei bei mir nicht sol.exe sondern Solitaire.exe. Diese befindet sich wahrscheinlich auch noch in einen anderen Pfad, deswegen geht es bei mir vermutlich nicht damit!
Das Problem mit der PBOSL-Hilfe habe ich bei mir mit (Werkzeuge konfigugurieren) gelöst, mit einfach F1 ging es leider nicht.
Das andere Problem mit dem beenden habe ich leider noch nicht in den Griff bekommen.
Trotz alledem vielen Dank für die Guten Tipps von euch ALLEN
