こんにちは、Delphi 5 バージョンを使用しています。Delphi でメモ帳を開いているときに問題が発生しています。ボタンのクリックでメモ帳を開いてデータを渡し、メモ帳がそのデータを表示できるようにします。保存したくありません。これに関して私を助けてください。ありがとう。
2482 次
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) ;
ShellApi
uses クラスも追加します。
更新されたコード
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 に答える