Autor Beitrag
markus\win32
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 01.05.03 18:50 
Hi
meine Consolenanwendung macht öfters prozesorintensive aufgaben, und soll aber weiterhin auf windowsmessages reagieren, also so als ob ich Application.Processmessages mache. Nur muss ich dazu die Forums unit einbinden, was mein 50kb Projekt auf 400kb hochjagt. Also würde ich gerne wissen wie ich selber, zumindest bestimmte wichtige windowsmessages agfange und auswerte) also z.B. close events ...

Markus


Zuletzt bearbeitet von markus\win32 am Do 01.05.03 19:46, insgesamt 1-mal bearbeitet
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Do 01.05.03 18:55 
Ich weiss jetzt nicht ob das ein guter Tipp ist, aber wenn du Threads verwendest, dann brauchst du "nur" die Unit Classes. Ob die Intern auch Forms benötigt, weiss ich nicht.
Ansonsten erstell den Thread mit der Windows API! Ich glaub im Forum gibt es ein Beispiel von Andreas X dazu.

Gruß wulfskin!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
markus\win32 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 01.05.03 18:57 
Naja kommt darauf an was einfacher ist:
Paar verscheidene messages auszuwerten, oder dem teil des codes in einem extra thread ausführen zu lassen
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 01.05.03 19:09 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
{-----------------------------------------------------------------------------
  Procedure : ProcessMessages
  Author    : Nico bendlin
  Date      : 2003-02-08
  Purpose   : Replacement for Application.ProcessMessages
  Arguments : hWnd: DWORD
  Result    : None
-----------------------------------------------------------------------------}
procedure ProcessMessages(hWnd: DWORD);
var
  Msg: TMsg;
begin
  while PeekMessage(Msg, hWnd, 0, 0, PM_REMOVE) do
    begin
      TranslateMessage(Msg);
      DispatchMessage(Msg);
    end;
end;

Als Handle mußt du allerdings das Handle eines Fensters angeben, an das die Nachrichten gehen, da es eigentlich nur bei Fenstern Sinn macht. Eine Konsolenanwendung, die in einer Schleife gerade was rechnet, kann so wie so keine Eingaben entgegennehmen.
markus\win32 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 01.05.03 19:22 
das sollte auch nur auf close und minimize regieren
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 01.05.03 19:25 
Das Ding läuft doch in der Konsole oder etwa nicht? Und die sollte auch reagieren, wenn dein Programm beschäftigt ist, da sie von Windows bereitgestellt wird.
markus\win32 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 01.05.03 19:35 
ok dann ist das ja eh überflüssig :)

Danke - Markus
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 01.05.03 19:37 
Gerade ausprobiert, ist überflüssig. Es sind praktisch zwei Programme, dein Programm und die Konsole. Die Konsole wird von Windows bereitgestellt und das Fenster macht ja eh nichts außer einen Container für dein Konsolenprogramm bereitzustellen, kann also noch ohne weiteres Nachrichten bearbeiten, wärend dein Programm arbeitet.