Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#1

wm_dropfiles an Anwendung senden (SendMessage)

  Alt 12. Mär 2005, 11:50
Ich versuche Krampfhaft ein WM_DropFiles an eine andere Anwendung zu schicken. Die message kommt bei dem anderen Programm auch an, allerdings ist dann die Fileliste nil welche ich gesendet hab.

Als Referenzquelltext hab ich http://groups.google.de/groups?hl=de...gbl%26rnum%3D2

irgendwie schein ich den aber falsch übersetzt zu haben (ich denk der knackpunkt liegt in dem globalLock)

Mein bisheriger Quelltext
Delphi-Quellcode:
var LInfo: PDragInfoA;
    LStr: String;
    LRes: Integer;
    LAlloc: Pointer;
    LHGlobal: Cardinal;
begin
  LStr := 'F:\';
  LHGlobal := GlobalAlloc(GMEM_MOVEABLE, SizeOf(TDragInfoA) + length(LStr) + 2);
  LAlloc := GlobalLock(LHGlobal);
  //
  LInfo := LAlloc;
  LInfo.uSize := SizeOf(TDragInfoA);
  LInfo.pt := Point(0, 0);
  LInfo.fNC := False;
  LInfo.grfKeyState := 0;
  LInfo.lpFileList := nil;
  LInfo.lpFileList := Pointer(Cardinal(LAlloc) + SizeOf(TDragInfoA));
  Move(LStr[1], LInfo.lpFileList^, length(LStr));
  LInfo.lpFileList[length(LStr)] := #0;
  LInfo.lpFileList[length(LStr) + 1] := #0;
  //a.lpFileList := Pointer(SizeOf(TDragInfoA));
  GlobalUnlock(LHGlobal);
  SendMessage(FindWindow(nil, PChar(Edit2.Text)), WM_DROPFILES, LHGlobal, 0);
  //GlobalFree(LHGlobal);
GlobalFree ist bewusst auskommentiert um auszuschließen das der Fehler am zu frühen Freigeben des speichers etc. scheitert.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat