Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi DosBox Vollbild wiederherstellen (https://www.delphipraxis.net/50682-dosbox-vollbild-wiederherstellen.html)

TUX_der_Pinguin 29. Jul 2005 13:32


DosBox Vollbild wiederherstellen
 
Hi,

ich habe mir ein kleines Prog geschrieben welches eine Dos-Anwendung
startet, ziel ist es das die Dos-Anwendung nur einmal gestartet werden
kann und nicht ein zweites mal.

Was bisher funktioniert:

Mein Programm startet die Dos-Anwendung und versteckt sich so gleich.
Jetzt verhindere ich per mutex das mein Programm nur einmal gestartet
werden soll, ergo die Dos-Anwendung wird auch nicht noch mal gestartet.

Soweit so gut, jetzt hatte ich die idee wenn die Dos-Anwendung minimiert
auf der Taskleiste liegt, und mein Programm wird erneut gestartet das
mein Programm darauf reagiert und anstatt die Dos-Anwendung ein 2. mal
zu öffnen die bisherige Anwendung "wiederherzustellen" sprich anzuzeigen.

Jetzt kommt das Problem, wenn die DosBox ein Fenster ist klappt alles
wunderbar, jedoch wenn die Dos-Anwendung im Vollbild modus läuft und
dann minimiert wird, weil z.B. per ALT+TAB in eine Windows Anwendung
gewechselt wurde und dann wird mein Programm aufgerufen wird zwar
die Dos-Anwendung aktiviert jedoch wird nicht in den Dos Vollbild modus
gewechselt.

Hat jemand eine Idee wie ich das hinbekommen kann, es fehlt nur noch das letzte stückchen bis mein Programm das macht was es soll bzw. was ich von
ihm erwarte ;-)

mfg


TUX

Mystic 31. Jul 2005 11:59

Re: DosBox Vollbild wiederherstellen
 
Funktioniert
Delphi-Quellcode:
ShowWindow(hwnd,SW_SHOWMAXIMIZE);
denn nicht?

TUX_der_Pinguin 23. Aug 2005 09:28

Re: DosBox Vollbild wiederherstellen
 
Hi,

sorry das ich jetzt erst antworte, ich war 3 Wochen im Urlaub.

So das Problem besteht nach wie vor.

ShowWindow(hwnd, SW_SHOWMAXIMIZED) bringt gar nichts, die Dosbox wird
zwar aktiviert, auf der Taskleiste zuerkennen. Jedoch wird die DosBox nicht in den
Vordergrund geholt, ein Windows.SetForegroundWindow(hwnd) zeigt auch keine Wirkung.

So langsam scheint es mir als würde soetwas nicht funktionieren.

mfg

TUX

Olli 23. Aug 2005 10:18

Re: DosBox Vollbild wiederherstellen
 
Wie wäre es mit MSDN-Library durchsuchenSetConsoleDisplayMode()? Entgegen aller Kommentare im MSDN, existiert die Funktion auch schon in Windows 2000 und XP (und aufwärts) in der kernel32.dll! Wenn du also nur auf NT-Systemen arbeitest, kannst du diese Funktion benutzen und auch statisch einbinden - ansonsten eben dynamisch.

Gerade noch gesehen: im MSDN nennt man als dritten Parameter einen Pointer auf eine COORD-Struktur. Allerdings habe ich in einem russischen Forum etwas anderes gefunden, dort ist es der Pointer auf ein DWORD. Da COORD und DWORD allerdings gleich sind, dürfte die Bedeutung auch gleich sein.

Holla, und auf der russischen Seite steht auch wunderbar beschrieben, wie es unter Windows 9x geht (Schnellübersetzung):
Zitat:

Code:
#define ID_SWITCH_CONSOLEMODE 0xE00F
Für die Modusumschaltung können Sie die Funktion Sendmessage benutzen:
Code:
SendMessage(hWnd,WM_COMMAND,ID_SWITCH_CONSOLEMODE,0);

Ich werde noch eine kleine Testanwendung schreiben und in die Codelib stellen.

MacGuyver 23. Aug 2005 10:31

Re: DosBox Vollbild wiederherstellen
 
Moin auch!

Das Handle deiner Anwendung hast du ja. Also:
Delphi-Quellcode:
SetForegroundWindow(aWinHandle);
ShowWindow(aWinHandle,SW_RESTORE);
SetForegroundWindow(aWinHandle);
ShowWindow(aWinHandle,SW_RESTORE);
SetForegroundWindow(aWinHandle);
ShowWindow(aWinHandle,SW_RESTORE);
Bei Windows95/98/ME muß das Teil wie im Schnipsel dreimal aufgerufen werden. Bei NT/2K/XP reicht einmal. Schon kommt das abgelegte Bild wieder zum Vorschein.

Stefan

TUX_der_Pinguin 23. Aug 2005 13:26

Re: DosBox Vollbild wiederherstellen
 
Hi,

also der letzte hinweis, mit dem dreimaligen ausführen des Codes
hat es gebracht, da es sich um ein Win98 Rechner handelt konnte ich
vorheriges nicht ausprobieren.

Vielen dank für die Hilfe, da muß man erst mal drauf kommen das das
so funktioniert ;-)

mfg

TUX

Luckie 23. Aug 2005 13:39

Re: DosBox Vollbild wiederherstellen
 
Das ist bestimmt auch nicht der offizielle Weg. :wall:

Olli 23. Aug 2005 13:41

Re: DosBox Vollbild wiederherstellen
 
Zitat:

Zitat von Luckie
Das ist bestimmt auch nicht der offizielle Weg. :wall:

Sicher nicht. Der oben für NT beschriebene ja aber auch erst ab Windows 2003 ;) ...

Wie ich jetzt allerdings hellsehen sollte, daß der Fragesteller Windows 98 benutzt :gruebel: ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz