Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TurboPascal Windows Benutzernamen anzeigen (https://www.delphipraxis.net/90415-turbopascal-windows-benutzernamen-anzeigen.html)

Muetze1 20. Apr 2007 16:13

Re: TurboPascal Windows Benutzernamen anzeigen
 
Die Windows VXD Dinger haben seit jeher über den bösen "Exception (ungültiger Opcode) in VM" Weg eien API. Darüber kann man auch den Nutzernamen ermitteln. Ich werde heute Abend mal meine Bücher wälzen und das raussuchen.

Dezipaitor 20. Apr 2007 19:23

Re: TurboPascal Windows Benutzernamen anzeigen
 
Zitat:

Zitat von sakura
Ich kann zwar nichts mehr zur Diskussion beitragen, aber:
Zitat:

Zitat von TUX_der_Pinguin
Das hatte ich versucht klar zu machen, habe mich wohl etwas falsch ausgedrückt.

Du hast Dich perfekt ausgedrückt. Wenn andere nicht verstehen, was Turbo Pascal 7 ist, dann ist es nicht Deine Schuld. Turbo Pascal ist immer nur rein DOS gewesen und Windows konnte man nur mit Turbo Pascal für Windows (max. 1.5) oder Borland Pascal für Windows entwickeln. :zwinker:

...:cat:...

Also du hast Recht und Unrecht!
Mit Turbo Pascal 7 konnte man nur Realmodeanwendungen erstellen.

Mit Borland Pascal 7 konnte man jedoch auch Windows 16bit Programme unter Dos erstellen -> Crosscompiler.

--
Ich kann mich irgendwie erinnern, dass es für DOS Bibilotheken gab/gibt, die Windowsbibilotheken laden konnten, um lange Dateinamen anzeigen zu können.
Vielleicht hilfts?

Sunlight7 20. Apr 2007 21:05

Re: TurboPascal Windows Benutzernamen anzeigen
 
Abend!

Wir wärs, wenn Du Dir ein Mini NonVCL Windows Programm schreibst, welches Dein DOS Programm aufruft und den Benutzernamen als Parameter übergibt?

CCRDude 20. Apr 2007 22:32

Re: TurboPascal Windows Benutzernamen anzeigen
 
Netzwerke und Benutzernamen gab es durchaus schon unter Dos! Auch in nem "Singleuser"-Betriebssystem kann man sich an nem Netzwerk anmelden, zudem war nicht jedes Dos so... da gabs z.B. ConcurrentDos, auch kein schlechteres Multitasking als Win 3.1 ;)
Ich erinnere mich auch grob an Netzwerkprogrammierung unter TP7... leider hab ich das immer nur für Novell-Netze (sprich laufendem Novell-Client) gemacht, ich denke aber mal, hier dürfte es um Windows-Netze gehen. Für Novell Netware gab's da dicke Bücher direkt von Novell... für DOS selber auch das IBM Technical Reference Manual mit DOS-Interrupts, allerdings noch lange nicht modern genug für Netzwerkkrams... beides wahrscheinlich nicht mehr zu bekommen oder nur noch zu Sammlerpreisen, aber es gab irgendwann auchmal eine wirklich riesige "Datenbank" mit Infos zu so ziemlich jedem Software-Interrupt, den man sich nur vorstellen kann. Wie hieß die bloß? Ein wichtiges Suchstichwort dürfte auf jeden Fall Interrupttabelle sein...

Muetze1 20. Apr 2007 22:48

Re: TurboPascal Windows Benutzernamen anzeigen
 
Zitat:

Zitat von Dezipaitor
Mit Borland Pascal 7 konnte man jedoch auch Windows 16bit Programme unter Dos erstellen -> Crosscompiler.

Nicht zu vergessen: Protected Mode Programme. Also mit DPMI Programme im PM.

Zitat:

Zitat von Dezipaitor
Ich kann mich irgendwie erinnern, dass es für DOS Bibilotheken gab/gibt, die Windowsbibilotheken laden konnten, um lange Dateinamen anzeigen zu können.

Das sind genau die API's die ich oben erwähnte...

Zitat:

Zitat von CCRDude
Ich erinnere mich auch grob an Netzwerkprogrammierung unter TP7... leider hab ich das immer nur für Novell-Netze (sprich laufendem Novell-Client) gemacht, ich denke aber mal, hier dürfte es um Windows-Netze gehen.

Novell hatte komplette API's auf DOS Ebene (NetWare Shell NETX) geboten. Die Windows Netzwerksysteme waren hauptsächlich in Windows. Diese alten Netzwerke die es von Windows für DOS gab, sind heute nicht mehr im Einsatz.

Zitat:

Zitat von CCRDude
..., aber es gab irgendwann auchmal eine wirklich riesige "Datenbank" mit Infos zu so ziemlich jedem Software-Interrupt, den man sich nur vorstellen kann. Wie hieß die bloß? Ein wichtiges Suchstichwort dürfte auf jeden Fall Interrupttabelle sein...

Ralf Brown's Interrupt List (RBIL). Ich verweise dabei auf "The undocumented DOS", "The undocumented PC" und "The undocumented Windows" sowie "DOS internals" aus der Andrew Schulmann Serie.

So, ich habe wohl zuviel versprochen. Die VxD's haben keine Möglichkeit den Usernamen zu ermitteln. Du kannst ja selber nochmal schauen: VxD API's. Ansonsten sollte dir vllt. dieser Aufruf schon weiterhelfen: NETWORK - PC LAN PROG v1.31+ - GET LOGGED ON USER NAME

Horst_ 21. Apr 2007 06:47

Re: TurboPascal Windows Benutzernamen anzeigen
 
Hallo,

man kann unter TP auch externe Programme mittels exec Siehe hier mit Beispiel aufrufen, wie oben schon vorgeschlagen wurde, kann man dann per Delphi mit einem Consolen-Programm den Usernamen in eine Datei schreiben lassen, welche man ja anschliessend löschen kann.
Mal schauen, ob mein Noteooki das kann.

Gruß Horst

TUX_der_Pinguin 23. Apr 2007 08:50

Re: TurboPascal Windows Benutzernamen anzeigen
 
@Horst_
Daran hatte ich auch schon gedacht aber fand das bis jetzt nicht so die saubere Lösung eine Temporärdatei dafür zuverwenden.

@Muetze1
Also die Interrupt Liste hatte ich auch schon mal gesehen jedoch scheitert es bei mir an der Assembler Programmierung. So
das ich nicht genau weiß wie ich den Befehl absetzte bzw. das Ergebnis einlesen kann.

CCRDude 23. Apr 2007 10:35

Re: TurboPascal Windows Benutzernamen anzeigen
 
Mehr "Assembler" als in der von Dir selber eingangs geposteten Funktion brauchst Du dazu meist gar nicht. Such mal in der Liste nach dem Interrupt mit den Parametern, die Dein Beispiel enthält, dann dürfte Dir die Analogie klarwerden ;)
Int 21/AX=5E00h - 10NET v5.0 - GET MACHINE NAME

AX = word; AH & AL sind dessen beide bytes (high & low), dein AH = $5E und AL = $00 entspricht als AX = $5E00. Und Du löst Interrupt 21 aus.

Du musst also "nur" noch die Funktion für "GET USER NAME" (wahrscheinlich anders beschrieben, sonst wäre es ja zu einfach) für Deine Umgebung finden und ziemlich parallel dazu umsetzen.

Muetze1 23. Apr 2007 11:06

Re: TurboPascal Windows Benutzernamen anzeigen
 
Zitat:

Zitat von TUX_der_Pinguin
Also die Interrupt Liste hatte ich auch schon mal gesehen jedoch scheitert es bei mir an der Assembler Programmierung. So das ich nicht genau weiß wie ich den Befehl absetzte bzw. das Ergebnis einlesen kann.

Wie schon gesagt, hat es mit Assembler nichts zu tun. Du hast in deinem Beispiel schon selber Interrupts aufgerufen ohne Assembler...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 Uhr.
Seite 3 von 3     123   

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