Einzelnen Beitrag anzeigen

Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Benutzerdefinierte Nachricht mit Charpointer als wParam

  Alt 15. Okt 2009, 17:49
Ich hab's jetzt so gelöst:
Delphi-Quellcode:
  w2 := FindWindow('TNWLForm','XYZ');
  Sendmessage(w2,NM_NRDE_MESSAGE_BEGIN,20*$10000,65+(66*$100)+(67*$10000)+(68*$1000000));
  Sendmessage(w2,NM_NRDE_MESSAGE_DATA,69+(70*$100)+(71*$10000)+(72*$1000000),73+(74*$100)+(75*$10000)+(76*$1000000));
  Sendmessage(w2,NM_NRDE_MESSAGE_END,77+(78*$100)+(79*$10000)+(80*$1000000),81+(82*$100)+(83*$10000)+(84*$1000000));
  Sendmessage(w2,NM_NRDE_MESSAGE_BEGIN,20*$10000,65+(66*$100)+(67*$10000)+(68*$1000000));
  Sendmessage(w2,NM_NRDE_MESSAGE_DATA,69+(70*$100)+(71*$10000)+(72*$1000000),73+(74*$100)+(75*$10000)+(76*$1000000));
  Sendmessage(w2,NM_NRDE_MESSAGE_END,77+(78*$100)+(79*$10000)+(80*$1000000),81+(82*$100)+(83*$10000)+(84*$1000000));
Delphi-Quellcode:
// Anwendung 2
NM_NRDE_MESSAGE_BEGIN:   begin
         nrdeOpen := true;
         nrdeType := Lobyte(Loword(wParam));
         nrdeLen := Hiword(wParam);
         nrdeBufAsc := '';
         if (nrdeType=NRDE_ASCII) or (nrdeType=NRDE_CONTROL) then begin
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Lobyte(Loword(lParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Hibyte(Loword(lParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Lobyte(Hiword(lParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Hibyte(Hiword(lParam))); Dec(nrdeLen); end;
         end;
         WriteLn('NRDE ',nrdeBufAsc);
      end;
   NM_NRDE_MESSAGE_DATA: if nrdeOpen then begin
         if (nrdeType=NRDE_ASCII) or (nrdeType=NRDE_CONTROL) then begin
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Lobyte(Loword(wParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Hibyte(Loword(wParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Lobyte(Hiword(wParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Hibyte(Hiword(wParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Lobyte(Loword(lParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Hibyte(Loword(lParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Lobyte(Hiword(lParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Hibyte(Hiword(lParam))); Dec(nrdeLen); end;
         end;
         WriteLn('NRDE ',nrdeBufAsc);
      end;
   NM_NRDE_MESSAGE_END: if nrdeOpen then begin
         if (nrdeType=NRDE_ASCII) or (nrdeType=NRDE_CONTROL) then begin
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Lobyte(Loword(wParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Hibyte(Loword(wParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Lobyte(Hiword(wParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Hibyte(Hiword(wParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Lobyte(Loword(lParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Hibyte(Loword(lParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Lobyte(Hiword(lParam))); Dec(nrdeLen); end;
            if nrdeLen>0 then begin nrdeBufAsc += Chr(Hibyte(Hiword(lParam))); Dec(nrdeLen); end;
         end;
                      end;
Umständlich, aber es läuft...
Marvin
  Mit Zitat antworten Zitat