AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Form nicht mehr bedienbar

Ein Thema von bluescreen25 · begonnen am 15. Feb 2006 · letzter Beitrag vom 16. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2      
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#1

Form nicht mehr bedienbar

  Alt 15. Feb 2006, 19:23
Hallo,

ich nutze eine Form in Größe einer Appbar am oberen Bildschirmrand. (formstyle :=fsStayOnTop)

Von meiner Hauptform setze ich über einen Button diese Form auf show

Mit der AppBar starte ich zudem noch das Navigationsproramm "Navigon Navigator Notebook" welches direkt maximiert dargestellt wird.

Jetzt mein Problem:

Ich sehe meine AppBar weiterhin über dem Navigon, kann diese aber nicht bedienen. Nur das Navigon ist bedienbar. wenn ich trotzdem auf der Appbar einen Button drücke, welcher aber nicht wirklich runtergeht und danach das Navigon beende, dann wird der Buttonbefehl ausgeführt.

Was kann ich tun ?


PS: wenn ich Notepad vom Windows da einbinde, dann klappt es. Navigon arbeitet nur min/maximiert.
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Form nicht mehr bedienbar

  Alt 16. Feb 2006, 15:32
keiner eine Idee ?
Hier mal der Code:
Zum starten vom Hauptmenü über einen Button (als Image mit OnmouseDown,Up,Click) zeige ich meine Form (navigation_frm) als kleine Leiste am oberen Bildschirmrand und startete gleichzeitig das ext Prog.
Hier kam es schon dazu, das meine form gar nicht zu Ende gezeichnet wurde, als das ext Prog startete.
Deshalb einen Delay-Timer von 3 sek.
Delphi-Quellcode:
procedure TMain_frm.Image5Click(Sender: TObject);
begin
   extApps_frm.timer1.Interval:=3000;
   extApps_frm.timer1.Enabled:=true;
   Main_frm.Hide;
   mediaplayer_frm.Hide;
   navigation_frm.FormStyle := fsStayOnTop;
   navigation_frm.Show;
   //SetForegroundWindow(navigation_frm.Handle);
end;
Delphi-Quellcode:
procedure TextApps_frm.Timer1Timer(Sender: TObject);
var app: String;
    appWithPfad : String;
begin
  begin
   app := ExtractFileName(config_frm.navigation_root_edit_Fld.Text);
   appWithPfad := config_frm.navigation_root_edit_Fld.Text;
   Wnd := FindWindow(PChar(app), nil);
   if IsEXERunning(app, False) then
    begin
      timer1.Enabled:=false;
      SetWindowPos(Wnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);
     //ShowMessage('Läuft schon...)
    end
  else
    begin
     timer1.Enabled:=false;
     extApps_frm.RunApp(appWithPfad,0,40,800,530);
     //ShowMessage('Läuft nicht...);
    end;
 end;
end;
Diese procedure ist übernommen, da ich in API noch gar keine Kentnisse habe, auch überall in meinem Code mal Testversuche.
Delphi-Quellcode:
procedure TextApps_frm.RunApp(const FileName: String; Left, Top, Width, Height: Integer);

  function EnumWindowsProc(hWnd: HWND; lParam: LPARAM): BOOL; stdcall;
  begin
    TList(lParam).Add(Pointer(hWnd));
    Result := True;
  end;

  function GetWndHandle(ProcessId: DWORD): HWND;
  var
    List: TList;
    I: Integer;
    PID: DWORD;
  begin
    Result := 0;
    List := TList.Create;
    try
      EnumWindows(@EnumWindowsProc, LPARAM(List));
      for I := 0 to List.Count - 1 do
        if GetWindowThreadProcessId(HWND(List.Items[I]), @PID) <> 0 then
          if PID = ProcessId then
          begin
            Result := HWND(List.Items[I]);
            Break;
          end;
    finally
      List.Free;
    end;
  end;

var
  SI: TStartupInfo;
  PI: TProcessInformation;

begin
  FillChar(SI, SizeOf(TStartupInfo), 0);
  SI.cb := SizeOf(TStartupInfo);
  if CreateProcess(nil, PChar(FileName), nil, nil, False, 0, nil, nil, SI, PI) then
  begin
    WaitForInputIdle(PI.hProcess, INFINITE);
    AppHWnd := GetWndHandle(PI.dwProcessId);
    if IsWindow(AppHWnd) then
     if IsWindowVisible(AppHWnd) then
      begin
      Application.ProcessMessages;
      //ShowWindow(AppHWnd,SW_SHOWMINNOACTIVE);
      MoveWindow(AppHWnd, Left, Top, Width, Height, True);
      //windows.SetParent(AppHWnd,main_frm.Handle);
      //SetWindowPos(AppHWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);
      SetWindowPos(AppHWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);
      //SendMessage(AppHWnd, WM_SYSCOMMAND, SC_Minimize, 0);
      CloseHandle(PI.hProcess);
      CloseHandle(PI.hThread);
     end;
   end;
end;
Wie gesagt, mit Notepad funktioniert es wunderbar, nur mit dem Navigator Notebook nicht, wenn es startet, dann öffnet sich dabei erst ein kleines Fenster mit Infos, danach erst das maximierte Programmfenster selbst. Irgendwie bekomme ich auch das Handle von diesem Prog nicht in den Griff. Abgesehen davon ist mein Hauptproblem, das ich meine Form (Leiste) oben sehe, und ich auch den Focus vom Navigon wegbekomme, aber irgendwie meine Buttons nicht betätigen kann solange das ext.Prog läuft.Ich denke das nicht zu ende zeichnen der Leiste,wenn ich den Timer weglasse, muss auch damit zusammenhängen.


  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: Form nicht mehr bedienbar

  Alt 16. Feb 2006, 15:53
Warum verwendest du nicht Delphi-Referenz durchsuchenshellexecute ?
shellexecute(handle, 'open', 'c:\...\wasauchimmer.exe', '', '', sw_maximize); und das im FormCreate, ggf. "handle" durch "0" ersetzen.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Form nicht mehr bedienbar

  Alt 16. Feb 2006, 16:11
Zitat von turboPASCAL:
Warum verwendest du nicht Delphi-Referenz durchsuchenshellexecute ?
shellexecute(handle, 'open', 'c:\...\wasauchimmer.exe', '', '', sw_maximize); und das im FormCreate, ggf. "handle" durch "0" ersetzen.
Hmm,jetzt setzt sich das ext. Prog über meine Form (nicht mehr sichtbar).
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Form nicht mehr bedienbar

  Alt 16. Feb 2006, 16:14
Dann programmier eine richtige Hier im Forum suchenAppBar und es sollte gehen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: Form nicht mehr bedienbar

  Alt 16. Feb 2006, 16:23
Zitat von Luckie:
Dann programmier eine richtige Hier im Forum suchenAppBar und es sollte gehen.
Jupp, oder guck mal hier: Mini DeskTop- Toolbar
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Form nicht mehr bedienbar

  Alt 16. Feb 2006, 16:28
Hmm habe wohl gerade festgestellt , das mit shellexecute gestartet, das ext. prog zwar erstmal meine Form überdeckt, ich aber über die Windoof-Taste die Taskleiste aufrufen kann und meine Form so wiedrum funktional über das ext kommt. Nur es bleibt nicht StayOnTop ,wenn ich wieder auf das ext. Prog klicke.

Aber nun muss es doch eine Lösung geben, wenn ich schon meine Form wieder greifen kann????

@Luckie : die richtige AppBar nimmt sich den Platz,den es braucht und die ext.Prog können unweigerlich nur darunter arbeiten wie ne Taskleiste oder? muss mal testen, aber wollte eigendlich nur mit meiner Leiste (MP3-Player Buttons) solange überlappen, wie die Navigation läuft, so das man beides bedienen kann.
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Form nicht mehr bedienbar

  Alt 16. Feb 2006, 16:31
Zitat von turboPASCAL:
Zitat von Luckie:
Dann programmier eine richtige Hier im Forum suchenAppBar und es sollte gehen.
Jupp, oder guck mal hier: Mini DeskTop- Toolbar
Das schaut ja ganz gut aus, nur bleibt diese Bar denn auch bei meinem ext. maximierten Prog obenauf? Oder kommen da die gleichen Probleme, das die verdeckt wird ? Ansonsten wäre ich ja wieder bei meiner Leiste....

Sagenhaft, gerade getestet, die Desktop Toolbar bleibt immer schon oben !!!
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#9

Re: Form nicht mehr bedienbar

  Alt 16. Feb 2006, 16:36
Wenn dein Programm "StayOnTop" hat und das startende Programm ebenfalls wird dieses über das bereits existierende gesetzt.
Was gemacht werden kann ist, das deine Anwendung regelmäsig prüft ob es das oberste Fenster ist. Wenn nicht muss es sich wieder als "StayOnTop" setzen.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Form nicht mehr bedienbar

  Alt 16. Feb 2006, 16:53
Zitat von turboPASCAL:
Wenn dein Programm "StayOnTop" hat und das startende Programm ebenfalls wird dieses über das bereits existierende gesetzt.
Was gemacht werden kann ist, das deine Anwendung regelmäsig prüft ob es das oberste Fenster ist. Wenn nicht muss es sich wieder als "StayOnTop" setzen.
damit gehts nicht, aber mit einem Dauertimer (alle 1 sek) habe ich folgendes erfolgreich getestet:
SetWindowPos(navigation_frm.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE); .....obwohl mich die Desktop ToolBar schon reizt, damit könnte ich überall im Programm die MP3-Funktionen nutzen und auch Navigation.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 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