ChristinaB Geschrieben 17. Juni 2010 Geschrieben 17. Juni 2010 Hallo Leute, weiß einer von euch, wie man die Speicheradresse einer Datei herrausbekommt von der man in VB den Pfad hat. Z.b. mit pointer oder so, ich habs bis jetzt leider noch nicht hinbekommen. Brauche die Adresse für eine Sendmessage. Zitieren
Klotzkopp Geschrieben 17. Juni 2010 Geschrieben 17. Juni 2010 weiß einer von euch, wie man die Speicheradresse einer Datei herrausbekommt von der man in VB den Pfad hat.Dateien liegen üblicherweise in Dateisystemen, und diese wiederum in aller Regel nicht im Hauptspeicher. Brauche die Adresse für eine Sendmessage.Windowsnachrichten kannst du nur an Threads oder Fenster schicken, nicht an Dateien oder Speicheradressen. Beschreib doch mal etwas genauer, was du vorhast. Zitieren
ChristinaB Geschrieben 17. Juni 2010 Autor Geschrieben 17. Juni 2010 Dim msg As Long msg = RegisterWindowMessage("EciImportData") Dim hwindow As Long hwindow = FindWindow("EciMainFrame", vbNullString) Static Pfad4 As String Pfad4 = Pfad3 & "eluxml" SendMessage(hwindow, msg, Chr(34) & Pfad4 & Chr(34), 0) So Sieht mein Code aus Sprich ich hab eine Datei, die ich an ein Programm schicken möchte. Mir wurde gesagt dass ich da wo Pfad4 steht die speicheradresse benötige... Zitieren
Klotzkopp Geschrieben 17. Juni 2010 Geschrieben 17. Juni 2010 Sprich ich hab eine Datei, die ich an ein Programm schicken möchte.Nein, du hast einen String, den du als Parameter einer Nachricht an ein Fenster schicken möchtest. Dass dieser String einen Dateipfad enthält, ist hier irrelevant. Wie hast du SendMessage deklariert? Bekommst du eine Fehlermeldung? Zitieren
ChristinaB Geschrieben 17. Juni 2010 Autor Geschrieben 17. Juni 2010 (bearbeitet) Private Declare Function RegisterWindowMessage Lib "user32" Alias _ "RegisterWindowMessageA" (ByVal lpString As String) As Long Private Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName _ As String, ByVal lpWindowName As String) _ As Long Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" _ (ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long Das sind meine Deklartationen und fehlermeldung ist die: Ungültige Konvertierung von der Zeichenfolge "C:\meinPfad in Typ Long. Edit: Hab nun aus wParam string gemacht also ByVal wParam as String: Aber geht nicht das Programm springt nicht drauf an. ____ Wenn ich die sendmessage einer Variablen übergebe kommt enthält diese __> 8630415260060221440 Bearbeitet 17. Juni 2010 von ChristinaB Zitieren
Klotzkopp Geschrieben 17. Juni 2010 Geschrieben 17. Juni 2010 Deklarier wParam als String. Bei SendMessage werden wParam und lParam für sehr viele unterschiedliche Typen benutzt, je nach Message. Es könnte zusätzlich sein, dass du SendMessageW statt SendMessageA verwenden musst. Zitieren
ChristinaB Geschrieben 17. Juni 2010 Autor Geschrieben 17. Juni 2010 Hab des mit String versucht das geht nicht. Hab auch jetzt anstatt A W genommen bekomme nun in der Variablen --->373662154752 Zitieren
Klotzkopp Geschrieben 17. Juni 2010 Geschrieben 17. Juni 2010 Wenn ich die sendmessage einer Variablen übergebeWenn du was tust? Man kann Variablen nichts "übergeben". Was sagt denn die Dokumentation dieser Nachricht? Bist du sicher, dass du diesen Namen richtig geschrieben hast? Welchen Wert hat msg? Zitieren
ChristinaB Geschrieben 17. Juni 2010 Autor Geschrieben 17. Juni 2010 msg hat -> 129212459012637574 Edit: Dim y = SendMessage(hwindow, msg, Chr(34) & Pfad4 & Chr(34), 0) y = 373662154752 Zitieren
Klotzkopp Geschrieben 17. Juni 2010 Geschrieben 17. Juni 2010 msg hat -> 129212459012637574Da läuft ja schon mal etwas schief. Der Rückgabetyp von von RegisterWindowMessage ist 32 Bit, nicht 64. Und der Wert ist entweder 0 oder zwischen 49152 und 65535. Wenn man die oberen 32 Bit von diesem Monsterwert ausblendet, kommt man auf 50054, das klingt schonmal nicht komplett falsch. Hast du jetzt eine Doku zu dieser Nachricht, die die Parametertypen beschreibt? y = 373662154752Auch der Rückgabewert von SendMessage ist nur 32 Bit groß, nicht 64. Was der Rückgabewert von SendMessage bedeutet, hängt von der verschickten Nachricht ab, auch hier ist die Doku notwendig. Zitieren
ChristinaB Geschrieben 17. Juni 2010 Autor Geschrieben 17. Juni 2010 Ich hab keine Ahnung was für ne Doku du meinst sorry... Zitieren
Klotzkopp Geschrieben 17. Juni 2010 Geschrieben 17. Juni 2010 Ich hab keine Ahnung was für ne Doku du meinst sorry... Den Namen "EciImportData" hast du dir doch nicht selbst ausgedacht, oder? Zitieren
ChristinaB Geschrieben 17. Juni 2010 Autor Geschrieben 17. Juni 2010 Achso=) Nein der wurde mir von einem Programmierer gesagt der das schonmal Programmiert hat aber nicht in VB...sprich er konnte mir nur den anhaltspunkt bis dahin wo ichs jetzt programmiert habe geben... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.