Entwickler-Ecke
Windows API - Externe Nachrichten einfangen???
djmasi - Di 13.05.03 10:56
Titel: Externe Nachrichten einfangen???
Servus Leute,
wie kann ich Nachrichten von externen Progs abfangen, die Windows an sie sendet bzw empfängt und darauf reagieren???
Brauche z.B. WM_CREATE und WM_PAINT. Zur Zeit schlage ich mich durch zwei Bücher (Windows-Programmierung), aber das ist nicht gerade verständlich, zudem es in C erklärt ist.
:cry:
Hat jemand ein kleines Beispiel für mich???
PS: Habe SUchfunktion schon eingesetzt, aber das was ich brauche hab ich net gefunden. :?
foxy - Di 13.05.03 12:05
welche nachrichten sind denn das???
sind das aktionen von anderen programmen oder ereignisse oder was?? das müsste man schon wissen :)
also welche art der nachrichten
djmasi - Di 13.05.03 12:16
Also mal detailliert:
Ich starte aus meinem Prog ein externes Prog. OK geht mit createprocess. Da ich aber die position bzw. die position beim maximierten Zusatand und die maximale/minimale Größe angeben will (muß!!!) benötige ich die WM_CREATE nachricht des gerade gestarteten Progs. Bei meinem eigenen Prog funktioniert das.
Die Position von externen Fenstern kann ich ja mit SetWindowPos angeben. Allerdings brauche ich ja dazu das Handle und leider dauert das ein wenig, d.h. das Prog muß dann schon vollständig erstellt sein. Da ist es aber schon fast zu spät. Ich muß dem Prog direkt sagen wie es gestartet werden soll.
Ich habe auch schon probiert die Werte über die StartUpInfo anzugeben, aber Windows legt sich da, mal mehr mal weniger, drüber und überschreibt das. Also muß das alles vorher passieren, wenn windows die W_CREATE schickt.
Ich hoffe du kannst damit was anfangen. Wäre super
Ich verzweifle hier langsam :nixweiss:
Delete - Di 13.05.03 12:50
Installier einen ShellHook oder einen MessageHook.
djmasi - Di 13.05.03 12:54
Ja nee is schon klar. Was soll ich machen??? :nut:
djmasi - Di 13.05.03 14:02
Habe leider noch nie (bewußt) mit Hooks gearbeitet. Kannst du mir vielleicht erklären wie ich das ungefähr anstellen müßte oder nen link auf ein tutorial geben??? :)
djmasi - Do 15.05.03 07:50
Danke für den Link. Hab das Prog mal ausprobiert. Klappt ja ganz gut. Mal schauen ob ich das für meine Zwecke umschreiben kann. :beer:
Wenn trotzdem nochn jemand ne Idee/Code hat dann immer posten. Bin für jeden Vorschlag offen :wink2:
djmasi - Do 15.05.03 08:43
@Tino,
also das Prog hab ich getestet. Läuft soweit auch. Allerdings hab ich jetzt ein Problem: hab bei den ShellEvents noch HSHELL_WINDOWCREATET mit reingenommen und dazu mir was anzeigen lassen. Das funktioniert mit den meisten programmen ganz gut, aber z.B. bei Notepad zeigt er mir nicht an daß es erstellt wurde, nur das gewechselt wurde. Solange dieses Fenster dann offen ist bekomme ich keine ShellEvents mehr!!! Wie z.B. in ein anderes Fenster gewechselt. Schließe ich dieses (Notepad), dann funktioniert das wieder. Das ist bei einigen Programmen so. Woran kann das liegen???
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure TForm1.HookLib1ShellEvent(Sender: TObject; wParam, Code: Integer); var Title: array[0..MAX] of Char; begin case Code of HSHELL_ACTIVATESHELLWINDOW: Memo1.Lines.Add(Format('%s DESKTOP', [FormatDateTime('c', Now)])); HSHELL_WINDOWACTIVATED, HSHELL_REDRAW: begin if GetWindowText(wParam, Title, 299) = 0 then Title[0] := #0; if LastTitle <> Title then begin Memo1.Lines.Add(Format('%s %s', [FormatDateTime('c', Now), 'zu ' + Title + ' gewechselt'])); LastTitle := Title; end; end; HSHELL_WINDOWCREATED: begin if GetWindowText(wParam, Title, 299) = 0 then Title[0] := #0; SetWindowPos(wParam, HWND_TOP, 205,20,450,350,0); Memo1.Lines.Add(Format('%s %s', [FormatDateTime('c', Now), Title + ' erstellt'])); LastTitle := Title; end; end; end; |
Hab ich hier nen Fehler drinnen oder liegt es an der dll? Du hast das Prog doch bestimmt auch schon mal getestet, oder? wenn du das komplette prog haben willst (damit du den quellcode nicht abtippen mußt) dann sag bescheid.
danke im voraus :wave:
Tino - Do 15.05.03 09:52
Ich muss dich leider enttäuschen. Ich habe das Programm noch nicht ausprobiert weil ich mich bei diesem Thema nicht auskenne. Ich kenn nur den Link den ich dir gepostet habe :?
djmasi - Do 15.05.03 09:57
Schade, aber vielleicht ist ja irgendjemand da draußen, der sich damit auskennt und nen Rat weiß???
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!