AGB  ·  Datenschutz  ·  Impressum  







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

Fenster nicht minimieren

Ein Thema von Optiplex · begonnen am 28. Okt 2008 · letzter Beitrag vom 7. Nov 2008
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#31

Re: Fenster nicht minimieren

  Alt 5. Nov 2008, 12:02
Zitat von Optiplex:
Oliver das würde aber bedeuten, dass wenn der Topmost geändert wird, die Form wieder minimiert bzw ausgeblendet wird und wie ich am Anfang von diesem Thema beschrieb sollte das Formular direkt auf dem Desptop liegen.

Solange wie die oben genannten Bedingungen erfüllt sind, dann ist das so und ändert sich auch nicht ... ich konnte bisher das SubForm nicht minimieren ... ausser durch das Minimieren-Symbol des Forms selber.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Jurai

Registriert seit: 5. Nov 2008
1 Beiträge
 
#32

Re: Fenster nicht minimieren

  Alt 5. Nov 2008, 13:02
Hallo zusammen!

Ich kenne mich jetzt in der Delphi-Programmierung nicht so aus, aber vielleicht kann ich so einen anderen Ansatz beisteuern:
Ich habe mal als Diensleister für ein Unternehmen mit hunderten Filialen deutschlandweit gearbeitet. Die unternehmensweite Software wurde auf den Kassen-PCs aller Filialen installiert. Eine einheitliche Domäne gab es nicht. Benutzer durften ausschließlich diese eine Unternehmenssoftware verwenden.

Wir haben das so gelöst:
In der Registry unter "Hkey_Local_Machine\Software\Microsoft\ Windows NT\CurrentVersion\Winlogon" gibt es einen Wert "Shell". Dieser Wert enthält gewöhnlich die Explorer.exe Wir haben die Explorer.exe gegen die Start-Datei der Anwendung ausgetauscht, haben die Benutzer-Rechte so angepasst, dass der Explorer auch nicht über den Taskmanager gestartet werden konnte.

Nach diesem Prinzip funktionieren u.a. auch einige Automaten für die Zimmerbuchung mancher Hotels. Aber auch andere Anwendungen sind im Einsatz. Meiner Erfahrung nach ist es sehr schwer via Anwendung den Zugriff auch den Desktop oder andere Anwendungen zu verweigern, solange Windows dies zulässt. Eine Anwendung kann man auch beenden.

Gruß Jurai
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#33

Re: Fenster nicht minimieren

  Alt 5. Nov 2008, 17:59
@Jurai: Ist schon interessant, aber in diesem Kontext irgendwie OT
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#34

Re: Fenster nicht minimieren

  Alt 6. Nov 2008, 08:09
Hallo Julius,
Ich habe den Code nach deinen Vorgaben verändert, aber leider bekomme ich immer noch 2 Fehlermeldungen beide in der selben Zeile.

E2003 Undefinierter Bezeichner: 'NewWndProc'
E2010 Inkompatible Typen: 'Pointer' und 'Integer'

er kennt nicht NewWndProc egal ob mit oder ohne @ ich habe auch probiert mit Cardinal( @ NewWndProc)
irgendwie scheint hier noch was zu fehlen

Delphi-Quellcode:
   const DTM_Raise=WM_User+83;

type
  TForm2 = class(TForm)

  end;

var
  Form2: TForm2;
  OldwndProc:Pointer;
  progmanhandle:Thandle;

implementation

procedure TForm2.FormCreate(Sender: TObject);
begin
  progmanhandle:=findwindow('Progman','Program Manager');
  OldwndProc:=Setwindowlong(progmanhandle,GWL_WNDPROC,@NewWndProc);
end;

function NewWndProc(hWnd:HWND;uMsg:Uint;wparam:WParam;lParam:LPARAM):Lresult;
begin
  if (uMsg=DTM_RAISE) then begin
// sleep(3000);
  end else CallwindowProc(Oldwndproc,hwnd,umsg,wparam,lparam);
end;
Hallo Oliver,
es ist auf jeden Fall sehr nützlich zu wissen durch welche Vorgaben man dieses Verhalten des Fensters erreichen kann, nur das Fenster steht dann ständig im Vordergrund, das ist für den Einsatzbereich für den du das Programm geschrieben hast OK. Für mein Programm kann ich das leider nicht gebrauchen. Ich habe gesehen, dass du im Menu den Punkt Immer im Vordergrund hast, deshalb war ich der Meinung dass man das Topmost ein und ausschalten kann, doch beim durchtesten konnte ich das Fenster nicht in den Hintergrund bekommen. Vielleicht können wir mit dem Ansatz von Oliver und der Erkenntnis, dass das Fenster in den Vordergrund gebracht werden muss, das Verhalten des Fensters so manipulieren, dass es nicht ständig OnTop ist. Das könnte ich mir auch im deinem Programm vorstellen.

Hallo Jurai,
dein Ansatz das Problem zu lösen ist weit überzogen, da wir niemanden in seine rechten beschränken wollen sondern nur das Verhalten eines Fensters ändern.

Gruss Dieter
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#35

Re: Fenster nicht minimieren

  Alt 6. Nov 2008, 19:36
Hi Optiplex,

ich denke wir sind hier auf dem falschen Weg ... oder wie der Engländer so gerne sagt: "heavy on the woodway".
Das Fenster wird gar nicht minimiert, sondern der Desktop wandert nach oben und verdeckt somit die nun darunterliegenden Fenster.
Darum bekommst du auch keine entsprechende Msg gesendet.

Darum funktioniert auch mein Ansatz mit StayOnTop.

Somit müsste also überprüft werden, ob das Fenster immer noch über dem Desktop liegt.

Das müsste der richtige Ansatz sein.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#36

Re: Fenster nicht minimieren

  Alt 7. Nov 2008, 08:16
Hi Oliver,
es ist genau richtig was du meinst, deshalb schrieb ich ja schon

Vielleicht können wir mit dem Ansatz von Julius und der Erkenntnis, dass das Fenster in den Vordergrund gebracht werden muss, das Verhalten des Fensters so manipulieren, dass es nicht ständig OnTop ist. Das könnte ich mir auch im deinem Programm vorstellen.

den laut Julius wird die Message DTM_Raise WM_User+83 "Toggle Desktop" an die den Program Manager "Progman" gesendet,
und diese Message versuchen wir mit dem oben gennanten Delphi-Code anzufangen aber leider komm ich da nicht weiter, weil ich zu wenig Erfahrung habe.

Julius hat sich aber leider auch nicht mehr gemeldet. Vielleicht hast du noch eine Idee wie wir den Code zum laufen bringen.

Für die nächsten 2 wochen bin ich viel unterwegs ich hoffe dass ich mich zwischendurch immer mal melden kann.

Gruss Dieter
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 05:17 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