Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi was machen mit den Hangups ? Konsolenprobleme die zweite ^ ^ (https://www.delphipraxis.net/37700-machen-mit-den-hangups-konsolenprobleme-die-zweite-%5E-%5E.html)

hboy 9. Jan 2005 00:53


was machen mit den Hangups ? Konsolenprobleme die zweite ^ ^
 
Hi leute. Brauch mal wieder eure Hilfe. Hab jetzt meine Konsole soweit fertig. Hat allerdings den gewaltigen Schönheitsfehler: :pale:

wenn ich z.B. while true do; ausführen lasse, lässt sich die Standardkonsole von Delphi abbrechen, meine eigene hängt allerdings fröhlich mit (es werden ja keine Messages mehr behandelt).

Messages in nem extra thread behandeln is auch nicht ( schon probiert ) ausserdem besteht die automatisch gelinkte konsole auch nur aus 1 thread.

Wie krieg ich das nu gebackn ? danke shcon mal^ :hello:

Edit: ja die frage is imma noch offen

Edit'2: für alle die mal sehen wollen was ich mein

Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

begin
  while true do;
end.
1 Thread
und trotzdem Message-behandlung ? Ist das in etwa über Interrupts gelöst ? Wenn ja wie setz ich das in Delphi um ???

Chris1986 9. Jan 2005 13:54

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Hi hboy,
ich weiß nicht genau was du meinst, aber es sieht stark so aus, als würdest du eine Nachrichtenschleife meinen. :lol: Ich hab das so gelöst:
Delphi-Quellcode:
var Shutdown: boolean;
    Eingabe: string;

  while not Shutdown do
  begin
    readln(Eingabe);
    if lowercase(Eingabe) = 'quit'
      then begin
             writeln('# Server wird in Sek beendet');
             sleep(5000);           //5Sek auf das schließen warten
             writeln('# Auf Wiedersehen');
             Shutdown := true;
           end;
  end;
//Edit: pushen bitte erst nach 24Stunden :warn:
MfG
Christian

hboy 9. Jan 2005 18:20

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
hi danke erst mal für deine Antwort.

Wenn du dir mal reinziehen willst was ich mit meiner Konsole so ausgeheckt habe kannste dir den ersten Thread dazu anguckn ^^ Wie bastel ich mir meine eigene Konsole

diese hatte mehrere Macken: wenn ich Readln ausgeführt habe hat die Konsole zwar schön funktioniert, allerdings lies sie sich nicht beenden. also den Prozess beim OnHide terminieren. tut.

Ich habe jetzt - da die Konsole ja auf den Code der Anwendung keinen Einfluss hat und da auch eine Endlosschleife stehen kann - einen extra Thread erzeugt, der allerdings keine Messages behandeln kann. Also bringt das auch nix. Stutzig hat mich dabei gemacht dass die *normale* Konsole von Delphi mit einem einzigen Thread auskommt. Demnach hab ich vermutet, dass der Programmablauf regelmäßig unterbrochen wird, um angefallene Messages zu behandeln ( Konsole is ja beweg- minimier und schließbar )

Und bevor ich die ganze Konsole in einen extra thread stecke ( was ja nicht sein muss ) wär es sehr chic rauszufinden wie es eleganter geht.

Also getreu dem Motto :wiejetzt:



hf
hboy

Assarbad 11. Jan 2005 13:55

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Was ist denn ...
Zitat:

Zitat von hboy
die *normale* Konsole von Delphi

???

Ich verstehe in deiner Frage nur Bahnhof. Falls du die "DOS-Konsole" meinst, die ist komplett anders aufgebaut und die Nachrichtenverarbeitung findet teils im Kernelmode statt. Daher nur "1 Thread".

hboy 11. Jan 2005 14:40

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
normal mein ich die Konsole die bei $Apptype Console automatisch gelinkt wird

Assarbad 11. Jan 2005 15:31

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Die wird nicht "automatisch gelinkt". Der PE-Header enthält dann die Info, daß er das Console-Subsystem benutzen soll und alloziert automatisch die Konsole oder startet das Programm in der "Elternkonsole" wenn vorhanden. Da ist kein Stück von Delphi dabei beteiligt.

hboy 11. Jan 2005 16:01

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
okok... und jetzt zu >>>>>> meinem problem <<<<<< um das es eigentlich geht ;)

Christian Seehase 11. Jan 2005 16:03

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Moin hboy,

wenn Du ein Programm mit Messagebehandlung aber ohne Fenster haben willst, nimmst Du ein "normales" und setzt Application.ShowMainform auf false.

Assarbad 11. Jan 2005 16:26

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Zitat:

Zitat von hboy
okok... und jetzt zu >>>>>> meinem problem <<<<<< um das es eigentlich geht ;)

Das Problem ist ja gerade dich zu verstehen :-\

Also ohne Threads gehts evtl. mit Overlapped I/O, aber ansonsten wirst du bei Nutzung von Pipes (was ja nicht anders geht) kaum drumherumkommen.

hboy 11. Jan 2005 17:47

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Problem ist:
Progamm hängt (logischerweise) bei einer Endlosschleife. jetzt will ich aber ( Interupts gibts ja wohl nich ? ) aus einem weiteren thread die eingehenden Messages behandeln. Ich frage mich jetzt ob ich den thread separat laufen lassen kann oder ob ich eigentliche Konsole mit in den Thread packen muss.

PS: ICH WILL WIEDER IN MEINE HEILE µC-WELT ZURÜCK ;)

Assarbad 11. Jan 2005 17:57

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Zitat:

Zitat von hboy
Problem ist:
Progamm hängt (logischerweise) bei einer Endlosschleife. jetzt will ich aber ( Interupts gibts ja wohl nich ? ) aus einem weiteren thread die eingehenden Messages behandeln. Ich frage mich jetzt ob ich den thread separat laufen lassen kann oder ob ich eigentliche Konsole mit in den Thread packen muss.

Na ob du das zusammenpacken willst oder in verschiedenen Threads und dafür synchronisiert realisierst ist doch deine Sache. Ich würde es vermutlich in den selben Thread packen, in dem du ja, wie ich vermute, eine Wait-Funktion benutzt. Dort wäre dann entsprechend eine Funktion ala MsgWaitForMultipleObjects() angebracht.

hboy 11. Jan 2005 19:46

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
die frage is ja gerade wie ich es dann realisier. bis jetzt gibts den Message loop nur beim Lesen einer Eingabe. Naja ich werds wohl in nen separaten thread packen und etwas umschreiben dann müsst es gehn :)

hboy 11. Jan 2005 19:50

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Zitat:

Zitat von Assarbad
... ob du das zusammenpacken willst oder in verschiedenen Threads und dafür synchronisiert realisierst ist doch deine Sache.

ja und wie kann ich in einem separaten Thread messages holen und verarbeiten ?

Delphi-Quellcode:
 procedure TConsoleWnd.ProcessMessage;
 var msg: TMsg;
 begin
   if GetMessage(msg,0,0,0) then
   begin
     TranslateMessage(msg);
     DispatchMessage(msg);
   end;
 end;


 procedure MessageProc(param: Cardinal);
 begin
  while true do TConsoleWnd(param).ProcessMessage;
 end;

 procedure TConsoleWnd.SetUseMessageThread(doit: Boolean);
 begin
   if (self.fUseMessageThread = false) and doit then
   begin
     BeginThread(nil,0,@MessageProc,@self,0,TID);
   end;

   if (self.fUseMessageThread = true) and (not doit) then
   begin
     TerminateThread(TID,0);
   end;
 end;
das hier ist irgendwie quatsch :( kA wieso

Assarbad 11. Jan 2005 20:23

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Mooooment, wo ist denn der I/O mit den Pipes?

Also die Nachrichtenschleife hast du ja in einem Extra-Thread - dort kannst du dann simultan auf Events und Messages warten.

hboy 11. Jan 2005 20:40

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
... nur dass da keine Messages behandelt werden :( es lassen sich einfach keine abfragen. wieso ?

und der rest läuft über ... mom

Delphi-Quellcode:
Function DevOpen(var F: TTextRec): Integer;
begin
  result :=0;
end;


Function DevInOut(var F: TTextRec): Integer;
begin
  case f.Mode of
    fmOutput: ConsoleOut(F);
    fmInput : ConsoleIn (F);
    fmInOut : ConsoleOut(F);
  end;
  result :=0;
end;

Function DevFlush(var F: TTextRec): Integer;
begin
  DevInOut(F);
  FillChar(F.Buffer,F.BufPos-1,0);
  F.BufPos := 0;
  result :=0;
end;

Function DevClose(var F: TTextRec): Integer;
begin
  result :=0;
end;


procedure AssignDev(var F: Text);
begin
  with TTextRec(F) do
  begin
    Mode := fmClosed;
    BufSize := SizeOf(Buffer);
    BufPtr := @Buffer;
    OpenFunc := @DevOpen;
    InOutFunc := @DevInOut;
    FlushFunc := @DevFlush;
    CloseFunc := @DevClose;
    Name[0] := #0;
  end;
end;

initialization
  ConsoleWin := TConsoleWnd.Create(0);
  ConsoleWin.Caption := system.ParamStr(0)+ ' - NVConsole';
  ConsoleWin.Show;
  consolewin.UseMessageThread := true;
  ConsoleWin.proto.AddLine('NonVCL Console v0.1 2005 ',$0,$00C000);
  ConsoleWin.proto.AddLine('',0,0);
  AssignDev(Output);
  AssignDev(Input);
finalization
  killed:= true;
end.

tadaa...

Assarbad 11. Jan 2005 21:20

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Deine Anwendung ist also bereits eine Fensteranwendung? In diesem Falle gibt es bereits eine Message-Loop und diese müßtest du benutzen. Ich ging davon aus, daß du mit Pipes arbeitest. Sieht aber nicht danach aus, wenn ich mir den obigen Code anschaue.

hboy 11. Jan 2005 21:56

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
nur dass das Fenster NonVCL is...

PS: also wenn da einer wäre hätte ich den selber programmiert und wüsste es :)

Assarbad 11. Jan 2005 22:15

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Zitat:

Zitat von hboy
nur dass das Fenster NonVCL is...

PS: also wenn da einer wäre hätte ich den selber programmiert und wüsste es :)

Ist doch irrelevant ob es nonVCL ist. Wo steckt die Haupt-Messageloop?

hboy 11. Jan 2005 22:29

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
es gibt keinen ! oder doch ?...

Assarbad 12. Jan 2005 00:09

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Zitat:

Zitat von hboy
es gibt keinen ! oder doch ?...

Hoppala, da fehlen einem aber die Worte. Du solltest dir mal die Grundlagen der Win32-Programmierung (VCL und/oder nonVCL) anschauen. Natürlich gibt es eine Message-Loop. Da ich nicht weiß, wie du dein Fenster aufrufst, kann ich dir nicht sagen wo die Schleife steckt. Sie kann auch Implizit existieren, wenn du zB per DialogBoxParam() o.ä. ein Fenster erzeugst.

hboy 12. Jan 2005 14:02

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
nice one... nein es gibt wirklich keinen. die ( diesmal mit richtigem genus für Schleife ^^ ) Message-loop wirst du vergeblich suchen. es gibt eine bei ConsoleIn, die allerdings nach Ende der eingabe abgebrochen wird.
Wenn das so weitergeht pack ich das ganze zeug doch in einen Thread, mach ne eigene Message-loop und versuche, das Fensterli bei der CloseFunc zu schließen...

hboy 12. Jan 2005 14:06

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
ich wollte deswegen keine eigene message-verarbeitung, weil ich ja sonst die key events des Fensters verwenden müsste, so kann ich mir die Zeichen direkt aus der Message holen. Nur so als Anmerkung.

Assarbad 12. Jan 2005 14:38

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Zitat:

Zitat von hboy
nice one... nein es gibt wirklich keinen. die ( diesmal mit richtigem genus für Schleife ^^ ) Message-loop wirst du vergeblich suchen. es gibt eine bei ConsoleIn, die allerdings nach Ende der eingabe abgebrochen wird.

Es gibt, wenn du ein Fenster (auf welche Art auch immer) in Windows erstellst, _immer_ eine Message-Loop. Wie gesagt, sie kann implizit sein, aber darum geht es hier nicht. Zeig doch einfach mal wo/wie du das Fenster erzeugst? Ist es _noch_ VCL? Siehe oben "ConsoleWin" (das sieht nach VCL-Form aus).

hboy 12. Jan 2005 14:50

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Erstens:

Hierarchie
Delphi-Quellcode:
TObject
  |
  TCustomWnd
    |
    TWnd
      |
      TConsoleWnd
ist das meine eigene Fensterklasse, zweitens gibt es kein application und deswegen auch kein application.run in dem die sein könnte und drittens wird das Fenster direkt über die WindowProc initialisiert, oder sollte ich mich da irren ?. Dazu braucht es noch keine Schleife um eine Queue abzuarbeiten.

Sag mir wo die Message-loop stecken soll ?

PS: zum Thema detaillierter Einblick in diesen Thread: Ich habe diese Konsole da
http://www.delphipraxis.net/download.php?id=9210
bis jetzt so weit gebracht. Programm ist ~130kb groß. Das will ich mit der VCL mal sehn ;)

hboy 12. Jan 2005 14:56

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
wenn ich mir deinen Code unter dem link da anschau finde ich auch eine Message-loop. Und jetzt denk dir die mal weg.

Assarbad 12. Jan 2005 15:25

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Zitat:

Zitat von hboy
Erstens:

Hierarchie
Delphi-Quellcode:
TObject
  |
  TCustomWnd
    |
    TWnd
      |
      TConsoleWnd
ist das meine eigene Fensterklasse, zweitens gibt es kein application und deswegen auch kein application.run in dem die sein könnte und drittens wird das Fenster direkt über die WindowProc initialisiert, oder sollte ich mich da irren ?. Dazu braucht es noch keine Schleife um eine Queue abzuarbeiten.

Sondern?

Zitat:

Zitat von hboy
Sag mir wo die Message-loop stecken soll ?

Wird das jetzt Brezeln braten ... ähem Rätsel raten? Das will ich von dir Wissen. Jedes Form oder Fenster braucht eine Message-Loop, soviel steht fest. Und wie exakt du die hookst um dort deinen weiteren Code unterzubringen ist ja jetzt die Frage.

Zitat:

Zitat von hboy
wenn ich mir deinen Code unter dem link da anschau finde ich auch eine Message-loop. Und jetzt denk dir die mal weg.

Du meinst sicher "program test1;" - wenn du dort die Schleife wegläßt, wird sich das Programm sofort beenden, denn es kann keine Nachrichtenverarbeitung stattfinden.

hboy 12. Jan 2005 15:45

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
hm also 1. Feststellung: es *braucht* einen loop. ja genau darum geht es ja wie ich die schleife unterbing ohne mein ganzes konzept übern haufen zu schmeißen ( nicht vorher eingeplant da nice-to-have )

Assarbad 12. Jan 2005 17:36

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Zitat:

Zitat von hboy
hm also 1. Feststellung: es *braucht* einen loop. ja genau darum geht es ja wie ich die schleife unterbing ohne mein ganzes konzept übern haufen zu schmeißen ( nicht vorher eingeplant da nice-to-have )

Kannst du mal die Implementation des Konsolenfensters (des Fensters!!!) zeigen.

hboy 12. Jan 2005 19:08

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
hättest den Klassenname nennen müssn. ich nehm mal an TConsoleWnd. TCustomWnd is meine heilige kuh ;)

Delphi-Quellcode:
unit ConsoleWnd;

interface
  uses WndClass, StaticClass, types, windows, sysutils;

  type TConsoleWnd = class(TCustomWnd)
    proto: TCustomWndProtocolstatic;
    killed : boolean;
    Constructor Create(Param: Cardinal);
    Destructor Destroy; override;
  private
    fUseMessageThread: Boolean;
    TID: Cardinal;
    procedure Resize(Sender: TObject);
    procedure Hide(Sender: TObject);
    procedure SetUseMessageThread(doit: Boolean);

  public
    property UseMessageThread: Boolean read fUseMessageThread write SetUseMessageThread;
    procedure ProcessMessage;
  end;

  var WinKilled: Boolean;

implementation

 Constructor TConsoleWnd.Create(Param: Cardinal);
 begin
   inherited;
   self.Width := 700;
   self.Height := 400;
   self.UseMinConstraints := true;
   self.MinConstraintsVal := Point(700, 400);
   proto := TCustomWndProtocolstatic.Create(self.handle);
   proto.Width := self.ClientRect.Right;
   proto.Height := self.ClientRect.Bottom;
   proto.font.Color := $FFFFFF;
   proto.font.Name := 'Courier';
   proto.Color := $0;
   proto.Clear;
   self.OnResize := Resize;
   self.OnHide := Hide;
 end;

 procedure TConsoleWnd.Resize(Sender: TObject);
 begin
   if self.ClientRect.Bottom =0 then exit;
   proto.Width := self.ClientRect.Right;
   proto.Height := self.ClientRect.Bottom;
 end;

 procedure TConsoleWnd.Hide(Sender: TObject);
 begin
   proto.Hide;
   windows.TerminateProcess(GetCurrentProcess,0);
 end;

 Destructor TConsoleWnd.Destroy;
 begin
   proto.Free;
   inherited;
 end;

 procedure TConsoleWnd.ProcessMessage;
 var msg: TMsg;
 begin
   if GetMessage(msg,0,0,0) then
   begin
     TranslateMessage(msg);
     DispatchMessage(msg);
   end;
 end;


 procedure MessageProc(param: Cardinal);
 begin
  while true do TConsoleWnd(param).ProcessMessage;
 end;

 procedure TConsoleWnd.SetUseMessageThread(doit: Boolean);
 begin
   if (self.fUseMessageThread = false) and doit then
   begin
     BeginThread(nil,0,@MessageProc,@self,0,TID);
   end;

   if (self.fUseMessageThread = true) and (not doit) then
   begin
     TerminateThread(TID,0);
   end;
 end;
end.

hboy 12. Jan 2005 19:10

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
kleine zwischenbilanz:
Das hier artet irgendwie in eine code- und Textschlacht aus. der Lösung bin ich allerdings noch nicht viel näher gekommen.

Assarbad 12. Jan 2005 20:33

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Zitat:

Zitat von hboy
kleine zwischenbilanz:
Das hier artet irgendwie in eine code- und Textschlacht aus. der Lösung bin ich allerdings noch nicht viel näher gekommen.

Also, in meinem D5 (ich habe nur D3, 4 und 5) kann ich kein TCustomWnd finden. Da also du selber das implementiert haben mußt, kann ich dir auch nicht sagen, wo du die Schleife versteckt hast. ABER alternativ zur Modifikation der Schleife könntest du doch die Fensterfunktion subclassen und alle für dich wichtigen Nachrichten abfangen.

hboy 12. Jan 2005 20:39

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
*kopfauftastahau* maaan was sag ich denn die ganze zeit...

Delphi-Quellcode:
unit CCL;

///////////////////////////////////////////////////
//  Custom Component Library                    //
//                                               //
//  Entwicklung eigener Klassen ohne die VCL    //
//                                               //
//  Autor: hboy          2004 / 2005            //
///////////////////////////////////////////////////

interface
  uses WndClass, MenuClass, PanelClass, NCDefWndClass, StaticClass;

  type TWnd       = class(TCustomWnd);
  type TWndControl = class(TCustomWndControl);
  type TWndChild  = class(TCustomWndChild);

  type TWndMenuItem = class(TCustomWndMenuItem);
  type TWndMenuFrame = class(TCustomWndMenuFrame);

  type TWndPanel = class(TCustomWndPanel);
  type TWndButton = class(TCustomWndButton);
  type TWndSwitch = class(TCustomWndSwitch);

  type TWndProtocolStatic = class(TCustomWndProtocolStatic);

implementation

end.

hboy 12. Jan 2005 20:43

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
also Oli...

erst mal danke dass du dich immer noch damit rumquälst. Nich jeder hat so viel geduld :thumb:

dass du mir unterstellt hast ich müsste mir erst mal grundlagenwissen aneignen is schon bissl herb aba kay...

also wenn ich die Konsole in eine vcl-anwendung reinschmeiß ( welch ironie, nich ^^ ) dann tut das natürlich wegen der Message-Loop in Application.

Das Problem bleibt immer noch das die Message behandlung in dem extra thread nicht funzt, und ich kein plan hab wie ich es anstellen soll. Vielleicht doch das Konsolenfenster in einem völlig separaten thread basteln und Messages behandeln ? Und was ist dann mit der Message-loop beim ConsoleIn ?

Assarbad 12. Jan 2005 21:02

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Okay, rekapitulieren wir mal die Regeln für Fenster. Die Message-Loop muß im selben Thread sein, welcher das Fenster erstellt. Ist dies bei dir der Fall? IMO nein.

Im Platform SDK steht:
An application must remove and process messages posted to the message queues of its threads. A single-threaded application usually uses a message loop in its WinMain function to remove and send messages to the appropriate window procedures for processing. Applications with multiple threads can include a message loop in each thread that creates a window.


Zitat:

Zitat von hboy
Vielleicht doch das Konsolenfenster in einem völlig separaten thread basteln und Messages behandeln ?

So sieht's aus ...

Daß mit den Grundlagen war sicherlich nicht böse gemeint, aber unter Windows gilt nunmal: kein Fenster ohne Nachrichtenschleife.

hboy 12. Jan 2005 21:04

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
bis jetzt hatte ich ja eine "bei Bedarf" ;)

Also jetzt bin ich nur noch gespannt ob ich das mit den Treiberfunktionen gebacken krieg ^^ wenn die die funktionen in nem anderen thread aufrufen müssn

hboy 12. Jan 2005 21:06

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
achja... platfrom sdk ? sowas gibts :spin2: uiuiui ;) *grins* sowas wäre auch mal nich schlecht *g*

PS: bin ja noch gottfroh dass du mich nich nach MSDN-Land geschickt hast ^^

Assarbad 12. Jan 2005 21:16

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Zitat:

Zitat von hboy
achja... platfrom sdk ? sowas gibts :spin2: uiuiui ;) *grins* sowas wäre auch mal nich schlecht *g*

PS: bin ja noch gottfroh dass du mich nich nach MSDN-Land geschickt hast ^^

Schick ne PN (mit Snailmail-Adresse) und du bekommst die beiden aktuellen PSDKs zugeschickt. Frei Haus.

hboy 12. Jan 2005 21:20

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
http://www.microsoft.com/msdownload/...ULLInstall.htm

das da ?

hm muss gehn. morgen mathe Klausur. cya&thx

Assarbad 12. Jan 2005 21:23

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
Zitat:

Zitat von hboy
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm

Jupp, das für XP SP2 und das für Windows 2003 Server (und alle anderen Windowsversionen außer XP SP2).

hboy 15. Jan 2005 12:02

Re: was machen mit den Hangups ? Konsolenprobleme die zweite
 
OK.
------------------------------------
Frage1: gibt es eine Möglichkeit Messages von fremden Threads zu holen und zu verarbeiten ?

Es schaut so aus, dass im Hauptthread ein Fenster erzeugt wird, und wenn der Hauptthread hängt, sollen die Messages an das Fenster weiterhin abgearbeitet werden.
Packe ich die Erzeugung des Fensters in einen separaten Thread, ergibt sich das Problem, dass wiederum von dem Thread mit Fenster auf globale Variablen (Input und Output) zugegriffen (AssignDev) wird, was allerdings zu Fehlern führt.

Frage2: wie löse ich das Problem wenn es keine Möglichkeit zu Frage1 gibt ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:35 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz