Autor Beitrag
Gockel
Hält's aus hier
Beiträge: 11


Delphi 7
BeitragVerfasst: Fr 14.03.08 11:42 
Hi Leutz...bin gerade in einer Vorlesung, deshalb die knappe Frage ^^
Ich hatte vor, mir ein kleines Tastensimulationsprogramm zu schreiben mit Delphi 6 auf Assemblerbasis. Hatte bisher nur unter DOS und Pascal gearbeitet, was auch ohne Probleme funktionierte bisher. Nur wenn ich unter Delphi mit int einen Interuppt anspreche bleibt das Programm stehen und sagt mir, daß der Rechner auf einmal irgendwelche Speicheradressen nicht mehr mag o.O auch wenn´s nur ein Einzeiler ist.
Meine Frage ist nu: Geht das eigentlich mit Delphi und Windows XP oder wird das von Windows untersagt? Oder muß ich unter Delphi bestimmte Parameter ändern. Weil unter DOS funktioniert ja alles prächtig.
Wäre für jede Antwort sehr dankbar!!
Gruß Marcus
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 14.03.08 12:36 
Auf NT basierenden Systeme kann die Hardware nur per Treiber angesprochen werden. Ein direkter Zugriff aus einer Anwendung wird vom Betriebssystem unterbunden.
Gockel Threadstarter
Hält's aus hier
Beiträge: 11


Delphi 7
BeitragVerfasst: Fr 14.03.08 12:46 
mh... danke dir erstmal für die Antwort. Das erklärt natürlich einiges. Ginge es dann über ein DOS programm welches im Hintergrund läuft? Geht das überhaupt, daß ein DOS Programm in Windows im Hintergrund läuft? Will damit sagen, daß ich evtl den ganzen Klamauk unter DOS schreibe und das dann laufen lasse, während ich was naderes mache am Rechner.
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Fr 14.03.08 13:07 
user profile iconGockel hat folgendes geschrieben:
mh... danke dir erstmal für die Antwort. Das erklärt natürlich einiges. Ginge es dann über ein DOS programm welches im Hintergrund läuft? Geht das überhaupt, daß ein DOS Programm in Windows im Hintergrund läuft? Will damit sagen, daß ich evtl den ganzen Klamauk unter DOS schreibe und das dann laufen lasse, während ich was naderes mache am Rechner.


Hallo,

Windows (und jedes andere moderne System) ist eine völlig andere Welt. Es gibt keine absoluten Adressen, keinen INT20H, keine TSRs usw. Es wäre denkbar, dass du dein Programm in einer Emulation wie DosBox zum Laufen bringst, aber das würde nichts nützen: im allerbesten Fall würden deine Tastendrücke innerhalb der Emulation irgendwie wieder auftauchen, aber Windows und dem Rest des Systems wären sie herzlich egal.

Gruss Reinhard
Gockel Threadstarter
Hält's aus hier
Beiträge: 11


Delphi 7
BeitragVerfasst: Fr 14.03.08 13:26 
Das ist ja die Grütze... Man kann nix mehr selber machen auf den modernen Betriebssystemen. Daher bleibe ich auch bei der Entwicklung und Ansteuern von Geräte auch bei DOS. Zumindest für Privatgebrauch. Naja, das heißt dann, daß ich mich mit den Treibern und vorallendingen mit Windows auseinander setzen muß. Also ich hab mal ein Programm unter DOS geschrieben, welches die scan und ascii codes der gedrückten Tasten ausließt. Ziemlich natürlich auch mit assembler und das funktionier auch unter Windows (Eingabeaufforderung). Ich weiß ja nicht, was Windows aus dem Programm macht oder sich darau zusammenwurschtelt. Vielleicht gehört die Frage nu nicht hier rein, aber ich frag die trotzdem ^^. Kann man unter Windows DOS-Programme im Hintergrund ablaufen lassen? Also, das die z.B.s. auch auf die Tastatur reagieren, obwohl die Task nicht im Vordergrund steht?
Ich danke euch schonmal Herzlich und ich werde mich dann ma mit Windows auseinandersetzen... also Funktionsweise der Treiber, wo was ist u.s.w.
Gruß Marcus
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Fr 14.03.08 14:56 
user profile iconGockel hat folgendes geschrieben:
...Kann man unter Windows DOS-Programme im Hintergrund ablaufen lassen? Also, das die z.B.s. auch auf die Tastatur reagieren, obwohl die Task nicht im Vordergrund steht?
...


Hallo,

ganz falsche Denkrichtung. Normal ist: nur das Fenster, das den "Eingabefocus" hat, bekommt Tastendrücke mit. Also nehmen wir mal an, du hast die Programme A,B und C gestartet und das Fenster von B angeklickt, so dass es im Vordergrund ist: wenn du jetzt Enter drückst, erfährt das das Windowssystem (natürlich) und das Programm B, die Programme A und C erfahren nichts davon. Dein DOS-Programm kann also schon laufen, aber trotzdem nichts von den Tasten wissen. Wie gesagt, ganz andere Welt.

Man kann unter Windows "Hooks" einrichten, um Systemereignisse wie Tastendrücke abzufangen, aber das ist ein völlig anderes Thema. Dazu must du in die Systemprogrammierung unter Windows einsteigen, ein DOS-Programm hat darauf keinen Einfluss. Bevor du mit so was anfängst, musst du erst mal ein ganz normales einfaches Windowsprogramm schreiben können.

Gruss Reinhard