Este exemplo mostra que, na aplicação de console, de fato apenas os primeiros 255 caracteres são exibidos, mas isso é uma limitação do console, pois ao colocar um breakpoint na linha da chamada a SendInput, após pressionar F9 para continuar, todos os 512 caracteres do texto de exemplo são escritos na janela de edição de código do Delphi

形式
Delphi
投稿日時
2023-01-25 11:13
公開期間
無期限
  1. program Project2;
  2. {$APPTYPE CONSOLE}
  3. {$R *.res}
  4. uses
  5. System.SysUtils, Winapi.Windows;
  6. const
  7. TEXT = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras volutpat lacinia enim. Ut a mattis nibh, in ' + 'pretium erat. Integer eget est purus. Aenean diam lacus, auctor vel finibus vitae, gravida varius tellus. In in lobortis orci. Vivamus venenatis, velit ac rutrum sagittis, justo tellus ' + 'fermentum diam, quis semper dolor eros non ante. Aliquam nec lorem pharetra, iaculis lacus id, ultricies ligula. Maecenas suscipit sem ut tincidunt egestas. Vestibulum maximus mi nec metus scelerisque pellentesque tortor.';
  8. var
  9. Inputs: TArray<TInput>;
  10. C: Cardinal;
  11. I: Cardinal;
  12. begin
  13. try
  14. SetLength(Inputs,Length(TEXT) * 2);
  15. I := 0;
  16. for C := 1 to Length(TEXT) do
  17. begin
  18. ZeroMemory(@Inputs[I],SizeOf(TInput));
  19. Inputs[I].Itype := INPUT_KEYBOARD;
  20. Inputs[I].ki.dwFlags := KEYEVENTF_UNICODE;
  21. Inputs[I].ki.wScan := Ord(TEXT[C]);
  22. Inc(I);
  23. ZeroMemory(@Inputs[I],SizeOf(TInput));
  24. Inputs[I].Itype := INPUT_KEYBOARD;
  25. Inputs[I].ki.dwFlags := KEYEVENTF_UNICODE or KEYEVENTF_KEYUP;
  26. Inputs[I].ki.wScan := Ord(TEXT[C]);
  27. Inc(I);
  28. end;
  29. // Put a breakpoint on the line bellow and when the flow stops, put the
  30. // cursor after the "end." and press F9
  31. SendInput(Length(TEXT) * 2,Inputs[0],SizeOf(TInput));
  32. readln;
  33. except
  34. on E: Exception do
  35. Writeln(E.ClassName, ': ', E.Message);
  36. end;
  37. end.
ダウンロード 印刷用表示

このコピペの URL

JavaScript での埋め込み

iframe での埋め込み

元のテキスト