Forum: Win32/Win64 API (native code)
by lbccaleb,
17. Mai 2009
Hallo, ich habe iene möglichkeit gefunden wie ich es mit WM_COPYDATA machen kann, aber wie oben beschrieben war das nicht mein Hauptziel! Sondern es mit eigenen Messages hinzubekommen! Trotzdem danke :thumb:
Forum: Win32/Win64 API (native code)
by lbccaleb,
17. Mai 2009
Hallo,
das ist richtig, es ist die einfachste Lösung, und ja sie Funktioniert auch, aber ich möchte ganz gerne den anderen Weg geklärt haben ;)
In späteren Programmen möchte ich dann auf diesen weg weiter arbeiten, und wenn ich den Fehler finde, sollte die Funktionen auch gehen!
Bloß weil es im mom ein wenig schwierig ist (insbesondere weil ich nicht so rcht weiß wo der Fehler liegt) muss...
Forum: Win32/Win64 API (native code)
by lbccaleb,
17. Mai 2009
Ich bin echt mit meinem Latein am ende :(
Habs so gemacht wie du gesagt hast aber geht nicht :(
function GetAllocFileName(wParam: WPARAM): PChar; //wparam ist nicht 0
var
DataPtr: Pointer;
begin;
Result := '';
DataPtr := GlobalLock(wParam); //aber hier gibts nen "nil" ich vermute das hier irgendwo mein Fehler steckt
Forum: Win32/Win64 API (native code)
by lbccaleb,
16. Mai 2009
OK, aber wenn ich auf ungleichheit Prüfe kommt bei mir der Fehler, also ist GlobalLock fehlgeschlagen, aber wieso??
Meine Funktionen:
Senden:
procedure GlobalAllocFileName(aWnd: HWND; aText: String);
var
Data: THandle;
DataPtr: Pointer;
Forum: Win32/Win64 API (native code)
by lbccaleb,
16. Mai 2009
Sorry, ist schon ne Weile her, hatte aber nicht viel Zeit :(
Aufjedenfall habe ich immer noch das Problem, das nichts ankommt, sieht vllt irgendjemand noch nen Fehler??
Ich bin schon tierisch am Verzweifeln :(
und das verstehe ich auch nicht so:
If DataPtr = nil Then Begin
Try
s := PChar(DataPtr); // oder sonstwas
Forum: Win32/Win64 API (native code)
by lbccaleb,
8. Mai 2009
Erstmal danke für deine Erklärung :thumb:
Hab das ganze nun erstmal wieder in eine Funktion gepackt, die es dann auslesen soll (sonnst seh ich bald gar nicht mehr durch^^)
function GetAllocFileName(wParam: WPARAM): PChar;
var
DataPtr: Pointer;
begin;
Result := '';
DataPtr := GlobalLock(wParam);
Forum: Win32/Win64 API (native code)
by lbccaleb,
8. Mai 2009
Ich dachte ich kann die Daten dann in der Message des Empfängers einfach per Pointer auslesen! Muss ich dort auch mit GlobalAlloc arbeiten?
Im Empänger sieht es so aus:
var
MSGFile: PChar;
WM_TSOPLAYFILE:
Forum: Win32/Win64 API (native code)
by lbccaleb,
8. Mai 2009
Habs jetzt so gelöst, aber irgendwie bekomme ich immer nur die ersten 3 Zeichen von der Pfandangabe! Was ist da noch falsch?
procedure GlobalAllocFileName(aWnd: HWND; aText: String);
var
Data: THandle;
DataPtr: Pointer;
Size: Integer;
oldWND: HWND;
begin
Forum: Win32/Win64 API (native code)
by lbccaleb,
7. Mai 2009
Wieso? Was sollte ich sonnst verwenden? Ich schicke eine Pfadangabe als PChar in eine andere instanz der selben Anwendung (in dem Fall die Hauptinstanz) in welcher bei ankunft der Message was der Pfad (in dem Fall ne Medien Datei) abgespielt werden soll!
Messages währen eigentlich genau das richtige denke ich :gruebel:
Forum: Win32/Win64 API (native code)
by lbccaleb,
7. Mai 2009
Ich hab jetzt noch eine Möglichkeit gefunden das mit der GlobalAtom Function von Windows zu machen! Ist das eine gute lösung oder sollte ich davon lieber die Finger lassen? Hab nicht wirklich nen Schimmer wozu genau diese GlobalAtom Function ist oO
Forum: Win32/Win64 API (native code)
by lbccaleb,
7. Mai 2009
Wie soll ich den speicher reservieren? In der anderen Anwendung weiß ich ja nicht wie groß der Text ist, der dort ankommt? Oder hab ich gerade nur ne Denkblockade?
Forum: Win32/Win64 API (native code)
by lbccaleb,
7. Mai 2009
Hallo,
ist es möglich Text per eigene Message zu verschicken und dabei nicht WM_COPYDATA zu nutzen??
Habe schon das hier gefunden:
Send Message
aber das ist nicht das wahre, da er ab und zu nur Kaudawelsch bekommt! Oder liegts an mir??