Отправить текст в Блокнот (или любую открытую программу)

У меня открыто пустое окно блокнота, мое приложение в Delphi и большой энтузиазм, но теперь я должен ЗАПИСАТЬ в блокноте содержимое трех TEdit в определенном порядке во время нажатия кнопка Я уже посвятил себя изучению мемориала клуба, но не могу найти ничего умеренно приближенного к тому, что мне требуется.

-4
задан 27.11.2019, 18:11
1 ответ
uses
  Clipbrd;

procedure LaunchNotepad(const Text: string);
var
  SInfo: TStartupInfo;
  PInfo: TProcessInformation;
  Notepad: HWND;
  NoteEdit: HWND;
  ThreadInfo: TGUIThreadInfo;
begin
  ZeroMemory(@SInfo, SizeOf(SInfo));
  SInfo.cb := SizeOf(SInfo);
  ZeroMemory(@PInfo, SizeOf(PInfo));
  CreateProcess(nil, PChar('Notepad'), nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, sInfo, pInfo);
  WaitForInputIdle(pInfo.hProcess, 5000);

  Notepad := FindWindow('Notepad', nil);
  // or be a little more strict about the instance found
//  Notepad := FindWindow('Notepad', 'Untitled - Notepad');

  if Bool(Notepad) then begin
    NoteEdit := FindWindowEx(Notepad, 0, 'Edit', nil);
    if Bool(NoteEdit) then
    begin
      SendMessage(NoteEdit, WM_SETTEXT, 0, Longint(Text));

      // To force user is to be asked if changes should be saved
      // when closing the instance
      SendMessage(NoteEdit, EM_SETMODIFY, WPARAM(True), 0);
    end;
  end
  else
  begin
    ZeroMemory(@ThreadInfo, SizeOf(ThreadInfo));
    ThreadInfo.cbSize := SizeOf(ThreadInfo);
    if GetGUIThreadInfo(0, ThreadInfo) then begin
      NoteEdit := ThreadInfo.hwndFocus;
      if Bool(NoteEdit) then begin
        Clipboard.AsText := Text;
        SendMessage(NoteEdit, WM_PASTE, 0, 0);
      end;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  LaunchNotepad('test string');
end;
1
ответ дан 01.12.2019, 10:46
  • 1
    Я считаю, что это, в общем, не хорошая одна prá ctica использовать пюпитр в виде дощечки с зажимом, но если нужно реализовывать немного gené богатый, что функционировал с любой программой и пользователем está добро, осознающее то, что ocurrirá я предоставляю этот случай как vá lido, поэтому пойди +1, приветствие! – jachguate 29.11.2019, 19:39

Теги

Похожие вопросы