Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

EXE soll ihren Dateinamen erkennen - HILFE!

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 02.10.2004, 22:23    Titel: EXE soll ihren Dateinamen erkennen - HILFE! Antworten mit Zitat

Hallo.

Wie kann eine EXE ihren eigenen Dateinamen herausbekommen?

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!


Zuletzt bearbeitet von Sebastian am 04.10.2004, 14:55, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 03.10.2004, 19:57    Titel: Neue Erkenntnisse Antworten mit Zitat

Hallo.

Jemand Schlaues aus einem ASM-Forum hat Folgendes geschrieben:
Gugst du ins PSP deines Programms (kannst zB. DOS-Funktion 62h benutzen, um die Segmentadresse zu bekommen); dort findest du beim Offset 002Ch die Segmentadresse zur naechsten Environment-Tabelle.
Die Environment-Tabelle gehst du bis zum Ende durch (Ende eines Eintrags wird durch ein Byte 00h gekennzeichnet. das Ende der Tabelle wird gekennzeichnet durch 2 aufeinanderfolgende 00h-Bytes).
Dort muessten dann 2Bytes mit den Werten 01h und 00h folgen.
Dahinter steht dann direkt ein 0terminierter String, der den Pfad+Dateinamen des gerade laufenden Programms enthaelt.

Die Environment koennte dann zB. so aussehen:
db "COMSPEC=C:\COMMAND.COM", 00h
db "WINDIR=C:\WINDOWS\", 00h
db 00h, 01h, 00h
db "C:\MeinPfad\MeinProgramm.exe", 00h


Wie setze ich das in QB um? Vielleicht kann mir ja ein ASM Freak wie z.B. AK helfen?! lächeln

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Weazel



Anmeldungsdatum: 10.09.2004
Beiträge: 22

BeitragVerfasst am: 04.10.2004, 17:46    Titel: Antworten mit Zitat

Guckst du QB-MonsterFAQ - wirst du fündig:

Code:

FUNCTION EXENAME$

DIM MCODE(1 TO 4) AS LONG, OS AS INTEGER, BX AS INTEGER, DUMMY AS LONG

DEF SEG = VARSEG(MCODE(1))
  OS = VARPTR(MCODE(1))
  POKE OS, &H55 'PUSH BP
  POKE OS + 1, &H89: POKE OS + 2, &HE5 'MOV BP,SP
  POKE OS + 3, &HB4: POKE OS + 4, &H62 'MOV AH,62
  POKE OS + 5, &HCD: POKE OS + 6, &H21 'INT 21
  POKE OS + 7, &H8B: POKE OS + 8, &H7E: POKE OS + 9, 6'MOV DI,[BP+6]
  POKE OS + 10, &H89: POKE OS + 11, &H1D 'MOV [DI],BX
  POKE OS + 12, &H5D 'POP BP
  POKE OS + 13, &HCA: POKE OS + 14, 2: POKE OS + 15, 0'RETF 2
  CALL ABSOLUTE(BX, OS)
DEF SEG = BX
  ENVSM = PEEK(&H2C) + 256 * PEEK(&H2D)
  ENVOS = 0
DEF SEG = ENVSM
  DUMMY = 0&
  WHILE DUMMY <> 65536
    DUMMY = PEEK(ENVOS) + 256& * (PEEK(ENVOS + 1) + 256& * (PEEK(ENVOS + 2) + 256& * PEEK(ENVOS + 3)))
    ENVOS = ENVOS + 1
  WEND
  ENVOS = ENVOS + 3
  N$ = ""
  A = 1
  WHILE A <> 0
    A = PEEK(ENVOS)
    IF A <> 0 THEN N$ = N$ + CHR$(A)
    ENVOS = ENVOS + 1
  WEND
DEF SEG

EXENAME$ = N$

END FUNCTION




Das hat bei mir wunderbar geklappt - natürlich gibt es "QB.EXE" zurück, wenn du es aus der Entwicklungsumgebung startest...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 04.10.2004, 18:07    Titel: Antworten mit Zitat

Mal ne blöde Frage: Wenn man ne Exe erstellt weiß man doch eh wie die dann heißt und kann das als Konstante hinschreiben, oder?

Wer benennt den Exe's um?
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Weazel



Anmeldungsdatum: 10.09.2004
Beiträge: 22

BeitragVerfasst am: 04.10.2004, 18:10    Titel: Antworten mit Zitat

Angenommen, du wölltest einen QB-Virus proggen, dann bräuchtest du das (ist eigentlich ganz simpel - möchte jemand einen Source?) grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 04.10.2004, 18:50    Titel: Hä? Antworten mit Zitat

Hallo.

Danke für den Source, aber ich habe das in der MonsterFAQ nicht gefunden. Ich habe sie sogar auf meinem Desktop.
Gefunden habe ich, wie man das Verzeichnis ausliest usw, aber wo steht denn da deine FUNCTION, Weazel???
Oder vielleicht habe ich eine veraltete Version der MonsterFAQ? - *ganzunsichersei*

Wenn die FUNCTION drinsteht - Sorry, hab ich echt übersehen... Und ich dachte immer, zu wissen, welche Themen in der MonsterFAQ zu finden sind. zwinkern

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Weazel



Anmeldungsdatum: 10.09.2004
Beiträge: 22

BeitragVerfasst am: 04.10.2004, 19:26    Titel: Antworten mit Zitat

Also, eigentlich nicht so schwer zu finden:

QbMonsterFAQ
->
"Dateien, Verzeichnisse und Laufwerke bearbeiten"
->
"Wie erkennt mein BAS-Programm sein eigenes Verzeichnis?"
->
Antwort 2
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 04.10.2004, 20:52    Titel: Ahaaa! Antworten mit Zitat

Weazel hat Folgendes geschrieben:
"Wie erkennt mein BAS-Programm sein eigenes Verzeichnis?"


Na da habe ich nicht geguckt... zwinkern
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Weazel



Anmeldungsdatum: 10.09.2004
Beiträge: 22

BeitragVerfasst am: 04.10.2004, 21:05    Titel: Antworten mit Zitat

Eine Frage:

Was genau willst du eigentlich mit der Funktion anstellen, die den EXE-Dateinamen liefert? Wozu brauchst du das in deinem Programm/Spiel/WasAuchImmer?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 05.10.2004, 11:37    Titel: Dateinamen erkennen Antworten mit Zitat

Hallo.

Das brauche ich für ein Programm, das nach dem PropertyBag Prinzip arbeiten soll. Es öffnet sich selbst (seinen eigenen Dateinamen!) und liest Informationen wie z.B. eine Highscore-Liste aus. lächeln
Wird die EXE umbennant, würde das nicht mehr gehen. Deshalb muss das Programm seinen Dateinamen erkennen.

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 05.10.2004, 11:50    Titel: Antworten mit Zitat

Ist doch Klasse wenn das dann nicht mehr geht, dann kann dir keiner das Progamm klauen und unter anderem Namen veröffentlichen.
Wer bennent schon ne exe um? Macht doch keiner...
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 05.10.2004, 12:00    Titel: Naja, so kann mans auch sehen. Antworten mit Zitat

Naja, so kann man's auch sehen. zwinkern
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz