Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Free-Basic-Fenster wieder in den Vordergrund bringen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
wolkensteyn



Anmeldungsdatum: 21.07.2008
Beiträge: 4

BeitragVerfasst am: 25.07.2008, 02:28    Titel: Free-Basic-Fenster wieder in den Vordergrund bringen Antworten mit Zitat

Heyho,

habe nach der Ausführung eines Shell-Befehls das Problem, dass FreeBasic nach der Ausführung zwar weiter macht, das entsprechende Ausgabefenster aber im Hintergrund bleibt weinen

Gibt es dafür (nachvollziehbare^^) Gründe und weiß jemand, wie man das Problem beheben kann?
Danke im Voraus.

__________
wolkensteyn


P.S. Hab schon Einiges hier im Forum durchgesucht, aber nichts gefunden, was mir weitergeholfen hätte. Hab noch nicht recht den Überblick hier ...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 25.07.2008, 09:50    Titel: Antworten mit Zitat

Hallo,

das Fenster des gestarteten Programms soll also im Hintergrund sein und das FreeBASIC-Fenster im Vordergrund oder wie? Dann füg nach START noch den Parameter /MIN ein. zwinkern

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
wolkensteyn



Anmeldungsdatum: 21.07.2008
Beiträge: 4

BeitragVerfasst am: 25.07.2008, 13:12    Titel: Nicht ganz... Antworten mit Zitat

@Sebastian: Mhm, nicht ganz. Das mit SHELL gestartete Programm soll schon im Vordergrund laufen. Nur nach dem Beenden soll die FreeBASIC-Anwendung wieder nach vorne. Das tut sie aber nicht immer missbilligen warum weiß ich nicht...
Eine Lösung wäre mit dem SCREEN-Befehl das Fenster wieder in den Vordergrund zu holen, aber eigentlich müsste das doch von alleine gehen, oder? zumal mit dem SCREEN-Befehl der Bildschirm erst einmal gelöscht wird, man den also vorher mit GET sichern müsste... Das scheint mir eine Lösung zu sein, ist aber nicht sehr elegant. Die Frage wäre, ob man das aktuelle FB-fenster nicht einfacher in den Vordergrund bringen kann...
__________
wolkensteyn
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.07.2008, 16:50    Titel: Antworten mit Zitat

Hi,
bisher habe ich auch noch keine Möglichkeit dafür gefunden.
Mit
Code:
    SetFocus handle
    BringWindowToTop handle
    UpdateWindow handle
in allen möglichen Reihenfolgen geht es (unter WinME) nicht.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 25.07.2008, 17:15    Titel: Antworten mit Zitat

Hallo,

bei mir funktioniert es mit folgendem Code: Code-Beispiel: Fenster in den Vordergrund holen Auf W2kSP4 erfolgreich getestet. lächeln

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.07.2008, 17:55    Titel: Antworten mit Zitat

Hey,
jaaa funktioniert!
Bei mir (WinME) sprang aber durch
SetWindowPos Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
das notpad-Fenster in den Hintergrund, behielt aber den Fokus.
Ich habe die Zeile auskommentiert und mal FB die Definitionen überlassen grinsen
Code:
'  FreeBASIC-Fenster in den Vordergrund bringen
'  Getestet mit FreeBASIC 0.20.0 SVN (Win)

'  Basiert auf ActiveVB-Tipp Nr. 214 (www.activevb.de)
'  Portiert nach FreeBASIC und im Funktionsumfang erweitert
'  durch Sebastian - 25.07.2008 - www.freebasic-portal.de
'
'  Der Quelltext kann frei verwendet werden.
'  Für eventuelle Schäden wird nicht gehaftet.
'

' ==== WinAPI Typendefinitionen ====
#Include Once "windows.bi"


' ==== Eigene Fenster-Nach-Vorne-Sub ====
Declare Sub AbNachVorn ()

' ==== SUB zur Erzeugung des Testbilds ====
Declare Sub Testbild ()

Const Fenstertitel = "Test-o-matic"

Dim As Integer i, PosX, PosY


Randomize Timer

Screen 12
WindowTitle Fenstertitel
Testbild

Shell "start notepad"
sleep 3000
AbNachVorn()

Sleep: End

Sub Testbild ()
    Dim As Integer i, PosX, PosY, Radius, Farbe, MaxRadius=30
    For i = 1 to 150
        PosX = Int(Rnd*639)+1
        PosY = Int(Rnd*479)+1
        Radius = Int(Rnd*MaxRadius)+1
        Farbe = Int(Rnd*15)+1
        CIRCLE (PosX,PosY),Radius,Farbe
    Next i
End Sub

Sub AbNachVorn ()
    Dim As HANDLE   Handle
    Dim As Integer  Result
    Dim As WINDOWPLACEMENT WndPlcmt
    Handle = FindWindow(0, StrPtr(Fenstertitel))
    'SetWindowPos Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
    SetWindowPos Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
    SetFocus Handle
    With WndPlcmt
        .Length = SizeOf(WndPlcmt)
        Result = GetWindowPlacement(Handle, @WndPlcmt)
        If Result Then
            If .showCmd = SW_SHOWMINIMIZED Then
                .flags = 0
                .showCmd = SW_SHOWNORMAL
                Result = SetWindowPlacement(Handle, @WndPlcmt)
            Else
                SetForegroundWindow(Handle)
                Result = BringWindowToTop(Handle)
            End If
        End If
    End With
End Sub

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 25.07.2008, 18:04    Titel: Antworten mit Zitat

Hm, deine neue Version funktioniert bei mir (Win 2000 SP4) leider nicht. Der Editor bleibt im Vordergrund und das FB-Grafikfenster blinkt blau lediglich in der Taskleiste, bleibt aber im Hintergrund, wo es war. neutral Füge ich die Zeile wieder ein, funktioniert es aber.
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.07.2008, 18:07    Titel: Antworten mit Zitat

Und mit der auskomentierten Zeile geht es?
Dann würde ich vorher eine WinOsVersions - Abfrage machen.
bzw. erst mal auf XP testen!
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 25.07.2008, 18:09    Titel: Antworten mit Zitat

Ja, mit der auskommentierten Zeile funktioniert's. Auf XP habe ich noch nicht getestet. neutral
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.07.2008, 18:33    Titel: Antworten mit Zitat

Wer kann das mal unter XP testen?
Code:
'  FreeBASIC-Fenster in den Vordergrund bringen
'  Getestet mit FreeBASIC 0.20.0 SVN (Win)
'
'  Basiert auf ActiveVB-Tipp Nr. 214 (www.activevb.de)
'  Portiert nach FreeBASIC und im Funktionsumfang erweitert
'  durch Sebastian - 25.07.2008 - www.freebasic-portal.de
'  Getestet mit FreeBASIC 0.18.5 (WinME) -Volta
'
'  Der Quelltext kann frei verwendet werden.
'  Für eventuelle Schäden wird nicht gehaftet.
'

' ==== WinAPI Typendefinitionen ====
#Include Once "windows.bi"


' ==== Eigene Fenster-Nach-Vorne-Sub ====
Declare Sub AbNachVorn (Fenstername As String)

' ==== SUB zur Erzeugung des Testbilds ====
Declare Sub Testbild ()

Const Fenstertitel = "Test-o-matic"

Dim As Integer i, PosX, PosY


Randomize Timer

Screen 18,32
WindowTitle Fenstertitel
Testbild

Shell "start notepad"
Sleep 3000
AbNachVorn(Fenstertitel)

Sleep: End

Sub Testbild ()
  Dim As Integer i, PosX, PosY, Radius, Farbe, MaxRadius=30
  For i = 1 To 150
    PosX = Int(Rnd*639)+1
    PosY = Int(Rnd*479)+1
    Radius = Int(Rnd*MaxRadius)+1
    Farbe = Int(Rnd*15)+1
    Circle (PosX,PosY),Radius,Farbe
  Next i
End Sub

Function GetOSplatform () As UInteger
  Dim OSV As OSVERSIONINFO
  OSV.dwOSVersionInfoSize = SizeOf(OSV)'Laenge des UDT angeben
  If GetVersionEx( @OSV ) Then 'Funktion aufrufen
    Return OSV.dwPlatformId 'Rueckgabewert
    '0 = ???
    '1 = Win 95 | 98 | ME
    '2 = NT | W2k| XP | Vista
  End If
  Function = 0
End Function

Sub AbNachVorn (Fenstername As String)
  Dim As HANDLE Handle = FindWindow(0, Fenstername)
  Dim As WINDOWPLACEMENT WndPlcmt
  If GetOSplatform >=2 Then
    SetWindowPos Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
    SetWindowPos Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
  End if
  With WndPlcmt
    .Length = SizeOf(WndPlcmt)
    If GetWindowPlacement(Handle, @WndPlcmt) Then
      If .showCmd = SW_SHOWMINIMIZED Then
        .flags = 0
        .showCmd = SW_SHOWNORMAL
        SetWindowPlacement(Handle, @WndPlcmt)
      Else
        SetForegroundWindow(Handle)
        BringWindowToTop(Handle)
        SetFocus Handle
      End If
    End If
  End With
End Sub

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 26.07.2008, 01:22    Titel: Antworten mit Zitat

Wenn ich schon grade mal XP anhabe ... lächeln

Mit Nicht-auskommentierter Zeile springt das FB-Fenster wieder in den Vordergrund, bekommt aber keinen Fokus. Mit auskommentierter Zeile passiert bei mir dasselbe wie bei Sebastian.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz