vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Stacks und andere Infos vom eigenen Programm ermitteln  
Autor: T.i.m.
Datum: 30.03.05 22:22

Hallo Leute,
ist es irgendwie möglich in erfahrung zu bekommen wo verwendete Stacks für das Projekt im Speicher abgelegt werden? und diese auszulesen?

Vielen Dank schonmal für jede weitere Info dazu

*greetz*
Tim
.
http://www.DotNetWorld.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stacks und andere Infos vom eigenen Programm ermitteln  
Autor: ModeratorMartoeng (Moderator)
Datum: 30.03.05 23:09

Was genau möchtest Du denn da auslesen?


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stacks und andere Infos vom eigenen Programm ermitteln  
Autor: T.i.m.
Datum: 31.03.05 01:35

Hallo Martoeng,
ich dachte an die Adresse der Variable Erl, die ja bekanntlich die Fehlerzeile ausgibt,
aber leider nur bei einem Fehler, nur kann ich mir gut vorstellen das jede Zeilennummer irgendwo in einem Stack bzw. Buffer liegen müsste, damit später Erl das Anzeigen kann.

*greetz*
Tim
.
http://www.DotNetWorld.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stacks und andere Infos vom eigenen Programm ermitteln  
Autor: T.i.m.
Datum: 31.03.05 13:51

Hallo,
hab nun mal folgendes versucht
Option Explicit
 
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst _
      As Any, pSrc As Any, ByVal ByteLen As Long)
 
Private Sub Form_Load()
On Error Resume Next
 
    Dim sp As Long
    Dim b(1 To 10) As Byte
    Dim i As Integer
 
65535   i = -1 ' : Err.Raise 1
    sp = StrPtr(Erl)
 
    CopyMemory b(1), ByVal sp, 10
    For i = 1 To 10 Step 2
        If b(i + 1) = 0 And b(i) = 0 Then Exit For
        Debug.Print ChrW$(b(i + 1) + b(i));
    Next i
    Debug.Print ""
 
    Unload Me
End Sub
So wie dort im Beispiel kommt als Ergebnis der Wert 0 raus.
Das liegt daran das die Variable Erl nicht immer mit der Zeilennummer gesetzt wird
Entfernt man den Remark aus Zeile "65535" liefter der Code auch die Zahl von Erl.
Nun meine frage, ist es möglich die Speicherstelle zu finden wo die Zeile ermittelt wird, denn von irgendwoher muss Erl ja den Wert erhalten.
Sprich ich möchte immer den Wert ermitteln egal ob ein Fehler (Err.Raise ...) ausgelöst wird oder nicht.

Andere frage noch, kann man in erfahrung bringen wo genau das Programm in den Speicher geladen wird ? sprich die Anfangsadresse bis Endadresse? dort in der nähe vermute ich dann auch gewisse Stacks oder so?!

*greetz*
Tim
.
http://www.DotNetWorld.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stacks und andere Infos vom eigenen Programm ermitteln  
Autor: ModeratorMartoeng (Moderator)
Datum: 31.03.05 14:31

Ne, das ist ja mal der völlig falsche Ansatz.
Erl liefert bei Dir so immer 0 zurück. Du müsstest schon die Zeilennummer vor jede Zeile schreiben, dass der da was anderes zurückgibt. Und selbst das nützt dir dann überhaupt garnichts. Und immer die aktuelle Ausführungszeile zu ermitteln stellt sich auch als sehr schwierig dar, wird wohl auch nicht gehen.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stacks und andere Infos vom eigenen Programm ermitteln  
Autor: T.i.m.
Datum: 31.03.05 14:38

Hi Martoeng,
ne ist mir schon klar das in jeder Zeile eine Zeillennummerierung her muss !
Das war ja nur fürs Beispiel recht knapp gehalten.
Ich sag mal wenn man die Speicheradresse kennt und sie mit einem Timer recht flott auswertet dann sollte das ganze weniger ein Probelem sein und man hat recht zeitnah die aktuelle Zeile die gerade durchgearbeitet wird.
Also ich bin der annahme das es schon gehen wird, wie gesagt mann brauch nur die passende Speicheradresse.

*greetz*
Tim
.
http://www.DotNetWorld.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel