AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Fremdes Fenster unverschiebbar (Wie erhalte ich die Events?)

Fremdes Fenster unverschiebbar (Wie erhalte ich die Events?)

Ein Thema von taveuni · begonnen am 12. Dez 2011 · letzter Beitrag vom 12. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2   
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#1

Fremdes Fenster unverschiebbar (Wie erhalte ich die Events?)

  Alt 12. Dez 2011, 10:04
Hallo Leute,
Ich hatte noch nicht allzuviel damit zu tun und bisher nichts brauchbares gefunden.
Angenommen ich starte notepad mit CreateProcess und habe dann den Fensterhandle.
Ich kann diesen dann mit SetWindowPos, MoveWindow und Co wunderbar verschieben usw.

Ich sollt aber nun das Fenster fixieren. Kann ich mich irgendwie auf die Move Events
registrieren? Oder gibt es da einen anderen Ansatz?
All diese:
Delphi-Quellcode:
    procedure WMWindowPosChanging(var msg: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;
    procedure WMEnterSizeMove(var Message: TMessage) ; message WM_ENTERSIZEMOVE;
    procedure WMMove(var Message: TMessage) ; message WM_MOVE;
    procedure WMExitSizeMove(var Message: TMessage) ; message WM_EXITSIZEMOVE;
beziehen sich doch nur auf meine eigene Applikation?

Danke
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: Fremdes Fenster unverschiebbar (Wie erhalte ich die Events?)

  Alt 12. Dez 2011, 10:56
Du könntest mit SetParent(NotepadWindowHandle, self.Handle) das Notepad Fenster in deine eigene Anwendung einbetten.
Andreas
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Fremdes Fenster unverschiebbar (Wie erhalte ich die Events?)

  Alt 12. Dez 2011, 11:01
Hallo shmia,

Das bringt eigenartige Effekte wenn aus der externen App dann ein weiteres Fenster geöffnet wird.
Es geht konkret um eine Quick And Dirty "Implementierung" eines Mail Clients (Windows Live) in ein
Leitsystem welches via Touchscreen bedient wird.
Der Mailclient wird über das Programm gelegt exl. Navigation des darunterliegenden Programmes.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Fremdes Fenster unverschiebbar (Wie erhalte ich die Events?)

  Alt 12. Dez 2011, 11:11
ChangeWindowMessageFilter liest sich vielversprechend, und evtl. wirkt es sich, da prozessweit, sogar auf weitere aus dem Notepad erzeugte Fenster aus. Leider "soon to be deprecated", aber wenn es für ein Spezailsystem ist, dass der User nicht voll unter seiner Kontrolle hat (lies: Nicht selbsttätig das OS wechseln kann) dennoch gutklingend

Im Zweifel ließe sich mit einem regelmäßigen MSDN-Library durchsuchenSetWindowPos auch noch was drehen, wenn auch weniger schön. Es könnte nämlich sein, dass WM_MOVE zu den nicht-filterbaren Messages gehört.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (12. Dez 2011 um 11:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Fremdes Fenster unverschiebbar (Wie erhalte ich die Events?)

  Alt 12. Dez 2011, 11:16
ChangeWindowMessageFilter liest sich vielversprechend, und evtl. wirkt es sich, da prozessweit, sogar auf weitere aus dem Notepad erzeugte Fenster aus. Leider "soon to be deprecated", aber wenn es für ein Spezailsystem ist, dass der User nicht voll unter seiner Kontrolle hat (lies: Nicht selbsttätig das OS wechseln kann) dennoch gutklingend
Ganz oben in deinem Beitrag, wird die nicht veraltete Methode verlinkt

http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: Fremdes Fenster unverschiebbar (Wie erhalte ich die Events?)

  Alt 12. Dez 2011, 11:19
Die ist jedoch nicht Prozessweit, und müsste für jedes neue Editorfenster neu gemacht werden. Daher hab ich die mal unerwähnt gelassen

Es gäbe sonst auch noch MSDN-Library durchsuchenSetWindowPlacement, was man aber wohl ähnlich wie SetWindowPos() verwursten müsste.

Und wenn man aus dem Editor ein LayeredWindow machte, ginge sogar noch MSDN-Library durchsuchenUpdateLayeredWindow
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Fremdes Fenster unverschiebbar (Wie erhalte ich die Events?)

  Alt 12. Dez 2011, 11:26
Hallo,

ChangeWindowMessageFilterEx wär genau was ich bräuchte.
Leider bin ich aber auf XP.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Fremdes Fenster unverschiebbar (Wie erhalte ich die Events?)

  Alt 12. Dez 2011, 12:50
Hallo,

ChangeWindowMessageFilterEx wär genau was ich bräuchte.
Leider bin ich aber auf XP.
Dann musst du ChangeWindowsMessageFilter nehmen, das ist ab WindowsXP kompatibel.
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#9

AW: Fremdes Fenster unverschiebbar (Wie erhalte ich die Events?)

  Alt 12. Dez 2011, 13:01
Laut Doku leider auch erst ab Vista, wenn ich nicht irre. Ansonsten bliebe ggf. noch das Unterschieben einer eigenen WndProc, was ich aber mangels Praxis nicht genauer beschreiben kann. Ich bin mir aber fast sicher, dass sich dazu auch in der DP etwas finden lassen sollte, gehen sollte es an sich ja.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Fremdes Fenster unverschiebbar (Wie erhalte ich die Events?)

  Alt 12. Dez 2011, 13:15
Laut Doku leider auch erst ab Vista, wenn ich nicht irre.
Eben.

Ansonsten bliebe ggf. noch das Unterschieben einer eigenen WndProc, was ich aber mangels Praxis nicht genauer beschreiben kann. Ich bin mir aber fast sicher, dass sich dazu auch in der DP etwas finden lassen sollte, gehen sollte es an sich ja.
Genau dieses suche ich. Weder in der DP noch sonstwo habe ich dies gefunden.
Und in dem Bereich fehlt auch mir die Praxis.

Natürlich könnte ich mit einem Timer die Pos abfragen und dann bei <> wieder setzen.
Aber da sträuben sich mir die Haare..
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:15 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