Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi fenster verstecken.. (https://www.delphipraxis.net/88876-fenster-verstecken.html)

napstar 22. Mär 2007 13:32


fenster verstecken..
 
hi.. ich habe ein problem...
ihr kennt doch sicher den MPlayer.. ^^ wenn nicht schaut her -> hier
ich öffne eine film datei mit Mplayer...
Delphi-Quellcode:
ShellExecute(Handle, 'open', 'dateien\mplayer\mplayer.exe', 'C:\film.avi', nil, SW_SHOW);
nun öffnen sich 2 fenster...
eins möchte ich aber verstecken
wie kann ich das machen???

Mazel 22. Mär 2007 17:16

Re: fenster verstecken..
 
Hallo und herzlich willkommen in der DP :)

Wenn der MPlayer dein Standardplayer ist, würde ich vorschlagen das so zu tun, damit müsste sich nur ein Fenster öffnen und daher brauchst du kein Fenster verstecken, es sei denn, du willst 2 Fenster:
Delphi-Quellcode:
ShellExecute(Handle, 'OPEN', PChar('C:\film.avi'), nil, nil, SW_NORMAL);
Gruß
Mazel

napstar 22. Mär 2007 17:53

Re: fenster verstecken..
 
bei mplayer öffnen sich immer 2 fenster :)...
und auserdem will ich den mplayer ein teil meines programmes machen :)

SirThornberry 22. Mär 2007 18:39

Re: fenster verstecken..
 
die beste Variante ist CreateProcess zu verwenden und anhand des zurück gelieferten Prozesses alle Fenster des Prozesses auflisten und das gewünschte verstecken.

MrKnogge 22. Mär 2007 18:47

Re: fenster verstecken..
 
Zitat:

Zitat von napstar
und auserdem will ich den mplayer ein teil meines programmes machen :)

Warum nutzt du dann nicht direkt die Komponente TMediaPlayer ?

Gruß

Nils_13 22. Mär 2007 19:13

Re: fenster verstecken..
 
Täusche ich mich oder ist MPlayer und MediaPlayer ein Unterschied (imho ja) :gruebel:

napstar 22. Mär 2007 19:35

Re: fenster verstecken..
 
in meinem 1. post ist ein link zu wiki ^^ schau mal da...

warum ich den TMediaPlayer nicht nutze??
ganz einfach... zu wenig codecs :) MPlayer topt alles und ist winzig :)

und createprocess habe ich noch nie benutzt.. bin erst neu in der scene ^^.. seit anfang der woche..
mal schauen ob ichs hinkriege.. wenn nicht melde ich mich :)

napstar 22. Mär 2007 19:54

Re: fenster verstecken..
 
hmmmm ich versteh garnix von createprocess..
wie soll ich denn vorgehen???
kann mir einer helfen? sagen wir fenstername ist in einer variable und die variable heißt dateipfad
ich bin am verzweifeln ^^

napstar 25. Mär 2007 15:09

Re: fenster verstecken..
 
kann keiner helfen????

bitsetter 25. Mär 2007 23:39

Re: fenster verstecken..
 
Hallo,

die Funktion RunProcess() habe ich aus der CodeLib und dann noch ein bisschen abgeändert.

Delphi-Quellcode:
function EnumWin(hWnd: THandle; ProcID: PCardinal): Boolean; stdcall;
var
  WinProcId: cardinal;
  Text: AnsiString;
begin
  Result := True;
  if IsWindowVisible(hWnd) then
  begin
    GetWindowThreadProcessID(hWnd, WinProcId);
    if ProcID^ = WinProcId then
    begin
      SetLength(Text, SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0));
      SendMessage(hWnd, WM_GETTEXT, Length(Text)+ 1, integer(Text));
      if Text = 'Unbenannt - Editor' then//Beispiel Text des gesuchten Fensters
        ShowWindow(hWnd, SW_MAXIMIZE);//bei dir dann SW_HIDE
    end;
  end;
end;

function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PCardinal): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb         := SizeOf(StartupInfo);
  StartupInfo.dwFlags    := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    False,
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
    then
      Result := WAIT_FAILED
  else
  begin
    if wait = FALSE then
    begin
      if ProcID <> nil then ProcID^ := ProcessInfo.dwProcessId;
      exit;
    end;
    if ProcID <> nil then
      ProcID^ := ProcessInfo.dwProcessId;
    WaitForInputIdle(ProcessInfo.hProcess, INFINITE);
    //WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess, Result);
  end;
  if ProcessInfo.hProcess <> 0 then
    CloseHandle(ProcessInfo.hProcess);
  if ProcessInfo.hThread <> 0 then
    CloseHandle(ProcessInfo.hThread);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ProcID: Cardinal;
begin
  RunProcess('notepad', SW_SHOW, true,@ProcID);//Pfad zum Programm hier eintragen
  EnumWindows(@EnumWin, integer(@ProcID));
end;
Den Code musst du noch anpassen, da ich deinen Player nicht habe. Vom Prinzip her könnte man es so machen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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-2025 by Thomas Breitkreuz