2

こんにちは、Delphi 5 バージョンを使用しています。Delphi でメモ帳を開いているときに問題が発生しています。ボタンのクリックでメモ帳を開いてデータを渡し、メモ帳がそのデータを表示できるようにします。保存したくありません。これに関して私を助けてください。ありがとう。

4

4 に答える 4

10

次のようなものを使用できます。

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;
于 2011-07-11T09:11:59.340 に答える
1

彼らがデータを保存できるようにしたくない場合は、自分のメモ帳を似せて作成する方が賢明です。結局のところ、それがTMemoの優れた機能であり、テキストの編集のみを許可します-それが必要な場合. そうしないと、ファイルの保存を止めることはほとんどありません。

于 2011-07-11T09:33:11.123 に答える
1

ボタン クリック イベントでは、次のコマンドを使用できます。開きたいファイル名をtextFileName.txt

ShellExecute(Handle,'open', 'c:\windows\notepad.exe','textFileName.txt', nil, SW_SHOWNORMAL) ;

空の txt ファイルを開き、データを保存したくない場合は、クリック イベントで次のメソッドを使用できます。 ShellExecute(Handle,'open', 'c:\windows\notepad.exe',nil, nil, SW_SHOWNORMAL) ;

ShellApiuses クラスも追加します。

更新されたコード

    procedure TForm1.Button1Click(Sender: TObject);
    var
    tempString : TStringList;
    begin
      tempString := TStringList.Create;
      try
        tempString.Add('The text you wanted to display');
        tempString.SaveToFile('C:\~tempFile.txt');
      finally
        tempString.Free;
      end;
      ShellExecute(Handle,'open', 'c:\windows\notepad.exe','C:\~tempFile.txt', nil, SW_SHOWNORMAL) ;
    end;
于 2011-07-11T03:20:27.790 に答える