Einzelnen Beitrag anzeigen

Gentleman

Registriert seit: 29. Sep 2004
302 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Dateipfad + Dateiname kopieren

  Alt 14. Mär 2006, 16:01
Danke für die schnelle Hilfe!

Ich habe jetzt mal ein bisschen rumprobiert. Ich habe es geschafft, dass das Programm nur einmal aufgerufen wird, allerdings habe ich immernoch Probleme die Daten zu senden. So sieht mein Code aus:

Delphi-Quellcode:
procedure TForm1.SendParam;
var
  aCopyData: TCopyDataStruct;
  hTargetWnd: HWND;
begin
  with aCopyData do
  begin
    dwData := 0;
    cbData := StrLen(PChar(ParamStr(1))) + 1;
    lpData := PChar(ParamStr(1));
  end;
  
  hTargetWnd := FindWindowEx(0, 0, nil, PChar('test'));
  if hTargetWnd <> 0 then
    SendMessage(hTargetWnd, WM_COPYDATA, Longint(Handle), Longint(@aCopyData))
  else
    ShowMessage('No Recipient found!');
end;

procedure TForm1.WMCopyData(var Msg: TWMCopyData);
var
  sText: array[0..99] of Char;
begin
  StrLCopy(sText, Msg.CopyDataStruct.lpData, Msg.CopyDataStruct.cbData);
  label1.Caption := sText;
end;

Initialization
  mHandle := CreateMutex(nil,True,'test');

  if GetLastError = ERROR_ALREADY_EXISTS then begin
    Form1.SendParam;
    Halt;
  end;

finalization
  if mHandle <> 0 then
    CloseHandle(mHandle)

end.
Allerdings bekomme ich dann nur einen Fehler ("Runtime error 216 at 00403496"). Leider weiß ich nicht wo ich da nun den Fehler gemacht habe.

@DerDa: NonVCL wäre da vielleicht echt eine gute Möglichkeit, habe ich bisher noch gar nicht dran gedacht. Allesdings habe ich noch nichts in Richtung nonVCL gemacht.
Lennard
Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger. (Kurt Tucholsky)
  Mit Zitat antworten Zitat