Autor Beitrag
djmasi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 54

Win XP Prof. Tablet PC Edition 2005
D7 Enterprise
BeitragVerfasst: Di 13.05.03 10:56 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 814

Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
BeitragVerfasst: 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

_________________
"Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
djmasi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 54

Win XP Prof. Tablet PC Edition 2005
D7 Enterprise
BeitragVerfasst: 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:
foxy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 814

Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
BeitragVerfasst: Di 13.05.03 12:48 
hmm.. also ich kann dir da nich direkt weiterhelfen

aber schau ma das hier an www.swissdelphicente...showcode.php?id=1239

order schau unter msdn nach weiter weis ich immo auch nich auf anhieb

_________________
"Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 13.05.03 12:50 
Installier einen ShellHook oder einen MessageHook.
djmasi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 54

Win XP Prof. Tablet PC Edition 2005
D7 Enterprise
BeitragVerfasst: Di 13.05.03 12:54 
Ja nee is schon klar. Was soll ich machen??? :nut:
djmasi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 54

Win XP Prof. Tablet PC Edition 2005
D7 Enterprise
BeitragVerfasst: 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??? :)
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 13.05.03 14:30 
djmasi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 54

Win XP Prof. Tablet PC Edition 2005
D7 Enterprise
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 54

Win XP Prof. Tablet PC Edition 2005
D7 Enterprise
BeitragVerfasst: 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???
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 54

Win XP Prof. Tablet PC Edition 2005
D7 Enterprise
BeitragVerfasst: Do 15.05.03 09:57 
Schade, aber vielleicht ist ja irgendjemand da draußen, der sich damit auskennt und nen Rat weiß???