Delphi - WinApi / Komunikaty

0

Witam mam problem z odebraniem komunikatu TwmCopyData w WndProc to kod:

type
Tmydata = record
ProcessId: Cardinal;
Hwnd: Cardinal;
end;

var
Wnd:TWndClass;
Msg:TMsg;
apphnd:hwnd;
CDS: TCopyDataStruct;

function WndProc(hwnd, message: Cardinal; wParam, lParam: integer): Integer; stdcall;
var
wmCopyData:TwmCopyData;
begin
Result:=0;
case message of
WM_CopyData:
begin

wmCopyData.CopyDataStruct:= << tu chce wsadzić Lparam bo komunikat wysyłany jest tak:sendmessage(hwnd,WM_CopyData,0,cardinal(@cds));

if wmCopyData.CopyDataStruct^.cbData = sizeof(TMydata) then
CopyMemory(@myData,@lParam,sizeof(TMyData));

end;
else Result:=DefWindowProc(hwnd, message,wParam, lParam);
end;
end;


próbowałem na wszystkie sposoby jakie znam i jake udało mi sie znalesc na necie ale nic niedaje prosze jakąś pomoć
0

http://www.google.com/search?client=opera&rls=pl&q=delphi+WM_CopyData&sourceid=opera&ie=utf-8&oe=utf-8
nie to, żeby od samej góry był opis i przykład jak się za to zabrać ...

0

te strony to widziałem mi chodzi o winapi a nie tform, na tform działa elegandzko a w api nie i rozsierdza mie to już.

0

ja też bym prosił o pomoc z tymi komunikatami chodzi o te rekordy jak je odebrać, niby mi błędu niewywala ale niedziała

0

ja też bym prosił o pomoc z tymi komunikatami chodzi o te rekordy jak je odebrać, niby mi błędu niewywala ale niedziała

0

Nikt nie potrafi pomóc ? dłubie w tym 2dni tylko mały przykładzik by sie przydał

0

moge liczyć w ogóle na jakąś pomoć??? czy to strata czasu?

0

jest tu ktoś???????????????//

0

Po co zaśmiecasz forum, tak jesteśmy, ale widocznie nikt nie zna odpowiedzi lub ten co zna jeszcze nie
doczytał Twojego wątku, bo nie ma czasu lub ochoty, ja nie pomoge bo w WinApi napisałem zaledwie 1
prosty program, a i to po bólach. W aplikacji VCL wiedział bym jak przesłać ten komunikat, a tak to ja
też nie wiem. Myślisz, że pisanie po 100 razy nowych postów coś zmieni i nagle dostaniesz odpowiedź ;/

0
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    lbl1: TLabel;
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure WndProc(var Message: TMessage); override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
  cds: TCopyDataStruct;
  s: string;
begin
  s := 'data to send';
  cds.dwData := 0;
  cds.cbData := Length(s) + 1;
  cds.lpData := PChar(s);
  SendMessage(Handle, WM_COPYDATA, 0, integer(@cds));
end;

procedure TForm1.WndProc(var Message: TMessage);
var
  pcds: ^TCopyDataStruct;
begin
  case message.Msg of
    WM_CopyData:
    begin
      Message.Result := 1;
      pcds := Pointer(Message.LParam);
      ShowMessage(PChar(pcds^.lpData));
    end;
    else
      inherited;
  end;
end;

end.
0

następnym razem jak będziesz tak jęczał to dostaniesz g**no a nie odpowiedź. Nikomu nie płacisz za to, że ci odpowiada więc żądania kieruj do swojej mamy a nie do nas. Jak ktoś będzie miał ochotę, czas i wiedzę to odpowie.

0

No ja niedawno odpowiedziałem na post http://4programmers.net/Forum/602168 ale jak w
ogóle Baran88 nie czytasz forum tylko co chwile coś wysyłasz to nie wiesz. MisiekD podał Tobie przykład, no i
tak się zastanawiam, bo ja zrozumiałem, że już próbowałeś takim sposobem, ale pod WinApi to nie działa. A z
tego co mi się wydaje powinno działać poprawnie, teraz mam co do tego przekonanie po odpowiedzi MisiekD.

0

Dobra mówie przywszystkich PRZEPRASZAM (MiskaD i Olesia) za to ze jestem jaki jestem ale moge liczyć na ostatnią pomoc??

0

Chciałbym sie spytać dlaczego jak twoze stringlista i chce dodać s.text:= s.text+string to te dodane znaki zapisują sie juz w dolnej linijce,nieczaje tego i prosze o pomoc

0

Chciałbym sie spytać dlaczego jak twoze stringlista i chce dodać s.text:= s.text+string to te dodane znaki zapisują sie juz w dolnej linijce,nieczaje tego i prosze o pomoc

0

bo każda linijka w SL kończy się znakiem końca linii (#13#10) i jak coś do tego dodasz to dodasz po znaku końca linii czyli po prostu nową linię. Jak chcesz dodać do ostatniej linii to musisz to zrobić tak

sl[sl.count - 1] := sl[sl.count - 1] + text;

1 użytkowników online, w tym zalogowanych: 0, gości: 1