Decls Frage

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

norc

Betreff: Decls Frage

BeitragFr, Sep 10, 2004 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es eine Möglichkeit, ein anderes Blitzprogramm zu beenden?

folgende Situation:

Level1.exe startet Level2.exe noch im Fullscreen mode
Level2.exe startet auch (ebenfalls Fullscreen), aber level1.exe bleitbt auf der Taskleiste minimiert eingefrohren, bis irgendwer daraufklickt, worauf es nocheinmal in den Fullscreenmode geht, um dann das letzte Kommando (End) auszuführen.

Jaja, ich weiss, wenn ich LEvel1.exe zuerst in windowed Mode zurückschalte, ist multithreading möglich. Das will ich aber nicht! Ich will, dass 2 Fullscreenproggies nacheinander laufen, ohne das Desktop zwischendurch anzuzeigen. Was gibt's da für möglichkeiten?

Habe mir gedacht, mittels eines Api-Calls das erste Exe "abzuschiessen" wäre am einfachsten. Leider gehen Befehle wie etwa "EndTask" erst ab Win2000. Gibt's Alternativen?

Danke!
 

David

BeitragFr, Sep 10, 2004 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Klar geht das über die WinAPI. Du brauchst lediglich den Handle deiner Anwendung, dann kannst du CloseWindow() oder SendMessage( WM_CLOSE ) verwenden bzw es geht auch mit TerminateProcess nur wär mir das, zu implementieren, in BlitzBasic ehrlich gesagt zu viel Arbeit.

Das dumme ist nur, dass, bevor die Anwendung beendet wird, dieselbe zuerst in den Windowed Modus umschaltet und du den Desktop klar und deutlich erkennen kannst.

grüße
http://bl4ckd0g.funpic.de
 

norc

BeitragFr, Sep 10, 2004 19:55
Antworten mit Zitat
Benutzer-Profile anzeigen
CloseWindow habe ich versucht, funzt nicht. Ebenso DestroyWindow. Ich denke, diese Kommandos funzen nur, wenn das zu schliessende Window ein Child des Callers ist, oder?

Hast du ein funktionierendes Beispiel?
 

David

BeitragFr, Sep 10, 2004 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Doch geht das, zur Not versuchst du SendMessage, aber das kommt alles auf gleiche raus.
Keine Ahnung, warum es bei dir nicht funktioniert, aber im Normalfall klappt es.

Ein Beispiel hab ich leider nicht zur Hand und ich bin ein fauler Mensch! Wink

grüße
http://bl4ckd0g.funpic.de
 

norc

BeitragFr, Sep 10, 2004 20:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich daran denke, wieviele Stunden ich schon anderen Blitzers geholfen habe. Und selber habe ich höchst selten Fragen. Aber hier brauch ich echt mal Hilfe.
Ein Fullscreen startet ein zweites Fullscreen und schiesst das erste dann ab. Eigenlich recht einfach auszuprobieren.
 

David

BeitragFr, Sep 10, 2004 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Soll das nun ein Vorwurf sein?
Du hast Tipps genug um dir selbst was zusammenzubasteln, also setzt dich ran.
Ich kann dir nur sagen, das du um deinen Desktop nicht herumkommst, den wirst du garantiert sehen.

Wenn du schon neun Stunden am Tag programmiert hättest, dann hättest du auch nicht große Lust mal das ein oder andere Beispielsprogramm zu schreiben, glaub mir!

grüße
http://bl4ckd0g.funpic.de
 

norc

BeitragFr, Sep 10, 2004 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Halb so wild.

SendMEssage funzt!

SendMessage(hwnd,$10,0,0)
und in der user32.decls
SendMessage%(hWnd%,Msg%,wParam%,lParam%):"SendMessageA"

Danke!

tft

BeitragSo, Sep 12, 2004 7:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Norc......

nu ist aber dein Ansinnen ja auch nicht umbedingt für jederman klar. Zwei einzelne Exe zu starten, hintereinander in Blitz macht beim erstmaligen hinlesen auch nicht so richtig Sinn. Und dann noch um 6.32 antworten ist harte Materie.

Kurtz um.... denke daran das du in NT Systemen die Berechtigung zum schliesen benötigst. Unter ME funktioniert das mit SendMasage sogar gelegentlich garnicht. Und dann wäre da noch der GrafiKtreiber. Einige wechseln automatisch in den Desktop wenn du einen neuen Screen öffnest. Ich selber habe mir indes damit geholfen, den DC des Desktop
holen. Den Inhalt zwischenspeichern. DC mit 0 löschen = Desktop Schwartz, DC zugriff sperren, und wenn die letzte Exe ausgefürt ist den DC wider füllen und zulassen. Spater bin ich dann darauf gekommen die Exe nicht mit ExeRun sonder mit CreateProcess zu starten. Dann kann man sogar bei offenen Fullscreen eine andere Exe darauf zugreifen lassen. War aber auch nicht das gelbe vom Ei. Offt popte die TaskLeiste in den Vordergrund.

Ich für meinen Teil habe den Schluss daraus gezogen. Zwei Exe hintereinander in BB sind nicht akzeptabel.

Aber wenn du mir sagst wozu du das machen must. Denn du hast ja einen konkreten Grund dafür. Fieleicht kommt mir ja eine Idee.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

soli

BeitragDi, Okt 18, 2005 3:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann tft leider nur bestätigen.

SendMessage bringt bei mir (Windows ME)
eine Memory Access Violation.
solitaire

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group