| Autor |
Beitrag |
D3lta
Hält's aus hier
Beiträge: 15
|
Verfasst: Do 13.08.09 23:24
hey leute, ich hab ein kleines problem mit postmessage.
ich sende damit tasten an eine andere anwendung. wie kann ich da bei 2 gleichen hwnds (fenstertiteln) unterscheiden an welches gepostet werden soll? =)
danke :) Moderiert von Narses: Topic aus Sonstiges (Delphi) verschoben am Do 13.08.2009 um 23:31
|
|
D3lta 
Hält's aus hier
Beiträge: 15
|
Verfasst: Fr 14.08.09 15:23
da das ja grad nicht mehr so aktuell ist und ich wirklich dringend eine lösung brauche
*push ich das jetz hier mal*
wie wird das eig. gehandhabt? benutzt postmessage dann die erste anwendung mit dem hwnd oder wechselt sich das ab und naja, wie kann ich das zielgerichtet dann drauf ansetzen 
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 14.08.09 15:29
Ein Handle (das ist dieses Hwnd, an das du die Message schickst) ist eindeutig. Da gibt es keine zwei von, die gleich sind. Was man machen kann, um eine spezielle Kopie eines mehrfach laufenden Programmes mit dem selben Fenstertitel zu bekommen, weiß ich nicht.
Wenn du zwei Kopien des Programmes laufen hast, und deine Messages immer an dasselbe Fenster schicken willst, musst du einmal das Fenster suchen, und dir das Handle merken. Das funktioniert allerdings nur solange sich das Handle des Fensters sich nicht ändert - bei Delphi-Formularen kann man das afaik durch ändern von FormStyle zur Laufzeit erreicht werden. Deshalb steht in der Hilfe dazu auch drin, dass man das nicht tun sollte...
_________________ We are, we were and will not be.
|
|
D3lta 
Hält's aus hier
Beiträge: 15
|
Verfasst: Fr 14.08.09 16:48
handle davon rauskommen is ja kein prob, nu ich hab jetzt halt 2 mal das gleiche handle (2 mal gleiche anwendung)
aber möchte entscheiden können an welche anwendung (mit dem gleichen handle) ich das senden möchte^^
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Fr 14.08.09 17:06
Nochmal, es gibt keine 2 gleichen Handles. Wäre ja auch sonst doof von Windows gemacht, weil es selbst die Programme / Fenster unterscheiden könnte, nem?
Zeig am besten mal den Code den du verwendest um die HWNDs ausfindig zu machen. Es könnte sein das du nur glaubst du hast 2 Programme mit dem selben HWND weil du immer nur ein Programm anfragst wegen dem HWND.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
D3lta 
Hält's aus hier
Beiträge: 15
|
Verfasst: Fr 14.08.09 19:27
Delphi-Quelltext 1:
| h := FindWindowA(0, 'titel'); |
<- so such ich halt und dann send ich halt per postmessage an h
und der titel is z.B. 2 mal vorhanden
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 14.08.09 22:11
D3lta hat folgendes geschrieben : | h := FindWindowA(0, 'titel');
<- so such ich halt und dann send ich halt per postmessage an h
und der titel is z.B. 2 mal vorhanden |
Da haben wir es doch schon. Es gibt zwei fenster mit dem gleichen Titel, aber die haben betsimmt nicht das gleiche Handle. Guck mal mit WinSpy, ob sie auch die gleiche Fensterklasse haben. Haben sie auch die gleiche Fensterklasse, wird es schwierig.
|
|
D3lta 
Hält's aus hier
Beiträge: 15
|
Verfasst: Sa 15.08.09 00:35
ich such doch damit aber doch nur nach dem titel oder? weil is ja 2mal die gleiche anwendung
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 15.08.09 01:21
Hast du schon mal geguckt für was der erste Parameter von FindWindow steht? Aber wenn du sagst, dass es die gleiche Anwendung ist, dann dürfte auch die Fensterklasse die selbe sein.
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 15.08.09 15:25
Dir bleibt dann nur der Weg über eine Auflistung aller Fenster. Dann kannst du in der CallBack-Prozedur für EnumWindows den Titel vergleichen und ggf. deine Aktion durchführen.
|
|