![]() |
Form verliert focus (dspack)
Hi
ich nutze delphi 7 und habe 2 forms. die 2. form soll mit hilfe von dspack videos abspielen. das erste viedeo wird ordentlich abgespielt, aber beim nächsten verliert die form den focus bei
Delphi-Quellcode:
der focus ist auch nicht bei der form1. wo ist der focus???
form2.FilterGraph1.RenderFile(Moviefile);
Delphi-Quellcode:
habe es schon mit Form2.setfocus probiert, hat aber nicht funktioniert.
form2.FilterGraph.Active := True;
form2.VideoWindow.FilterGraph := form2.FilterGraph; form2.FilterGraph.ClearGraph; form2.FilterGraph.RenderFile(Moviefile); form2.FilterGraph.Play; |
Re: Form verliert focus (dspack)
Ich hatte einen ähnlichen Effekt. Kann es sein, dass Du über das DSPack mit DivX arbeitest und rechts unten in der Symbol-Leiste ein kleines DivX-Icon erscheint? In meinem Fall ist der Fokus dorthin gewandert.
|
Re: Form verliert focus (dspack)
ja genau
das ist mir garnicht aufgefallen, das da ein neues symbol im tray ist. Wie hast du das gelöst??? |
Re: Form verliert focus (dspack)
Guck dir mal das an:
Delphi-Quellcode:
Florian
function ForceForegroundWindow(hwnd: THandle; Delay : Integer): Boolean;
const SPI_GETFOREGROUNDLOCKTIMEOUT = $2000; SPI_SETFOREGROUNDLOCKTIMEOUT = $2001; var ForegroundThreadID: DWORD; ThisThreadID: DWORD; timeout: DWORD; begin if delay <> 0 then sleep(delay); if IsIconic(hwnd) then ShowWindow(hwnd, SW_RESTORE); if GetForegroundWindow = hwnd then Result := True else begin if ((Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion > 4)) or ((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and ((Win32MajorVersion > 4) or ((Win32MajorVersion = 4) and (Win32MinorVersion > 0)))) then begin Result := False; ForegroundThreadID := GetWindowThreadProcessID(GetForegroundWindow, nil); ThisThreadID := GetWindowThreadPRocessId(hwnd, nil); if AttachThreadInput(ThisThreadID, ForegroundThreadID, True) then begin BringWindowToTop(hwnd); SetForegroundWindow(hwnd); AttachThreadInput(ThisThreadID, ForegroundThreadID, False); Result := (GetForegroundWindow = hwnd); end; if not Result then begin SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @timeout, 0); SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(0), SPIF_SENDCHANGE); BringWindowToTop(hwnd); SetForegroundWindow(hWnd); SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(timeout), SPIF_SENDCHANGE); end; end else begin BringWindowToTop(hwnd); SetForegroundWindow(hwnd); end; Result := (GetForegroundWindow = hwnd); end; end; |
Re: Form verliert focus (dspack)
gibt es keine einfachere möglichkeit ???
ich bin nicht so gut wie du in delphi und habe probleme den code zu verstehen. |
Re: Form verliert focus (dspack)
Hi heinz_braun,
wir werden uns wohl noch des öffteren über DSPack unterhalten ;), das selbe Problem hatte ich auch, habe zwar nicht mehr 2 Formulare aber probier doch mal das, nachdem du mit RenderFile den Film abspielst:
Delphi-Quellcode:
Gibt der Form den Fokus zurück.
uses
Unit2; //der Name der Unit ... form2.FilterGraph1.RenderFile(Moviefile); Form2.SetFocus; Ist deine Form garnicht mehr zu sehen? Wenn ja dann versuch mal:
Delphi-Quellcode:
Gruß
form2.FilterGraph1.RenderFile(Moviefile);
Form2.BringToFront; Mazel |
Re: Form verliert focus (dspack)
Also die Funktion tut nichts anderes, als ein Fenster in den Vordergrund zu zwingen. Die Funktion bindest du ganz einfach im Implementation Teil deiner Unit1.pas ein.
Um Form2 den Fokus zu geben:
Delphi-Quellcode:
@Mezel:
ForceForegroundWindow(Form2.Handle, 0);
Zitat:
Florian |
Re: Form verliert focus (dspack)
Hi,
verstehe ich nicht warum das nicht geht, bei mir gings mit dem SetFokus, habe aber später einiges an meinem Player geändert, so dass ich das nciht mehr brauchte. Gruß Mazel |
Re: Form verliert focus (dspack)
danke für die vielen antworten.
das mit form2.setfocus funktioniert bei mir nicht. die funktion von Florian Bernd funktioniert nur beim 1. mal. das heisst, das ich das fenster(form2) öffne und 2 filme abspielen lasse. danach wird das fenster invisible gesetzt und später wieder visibile und jetzt verliert die form2 wieder den focus. grrrr |
Re: Form verliert focus (dspack)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz