Windows窗体应用程序中的记事本

时间:2015-05-11 06:07:06

标签: c# winforms

我的字符串变量中有一些字符串。当我在Winform应用程序中单击打开按钮时,它会打开带有该字符串的记事本。记事本应该暂时创建。如果我关闭了记事本,它应该被永久删除。

例如,当我点击"打开"按下字符串"结果"生成的值和记事本应显示结果字符串值。

1 个答案:

答案 0 :(得分:6)

这应该演示如何打开记事本和文本放入其中。

  

这是启动记事本进程然后向其添加文本的简单示例。   将打开一个新的Notepad.exe进程,然后添加文本"发送消息,向我发送消息"到记事本的文本区域。

     

此处记录了SendMessage的常量0x000c http://msdn.microsoft.com/en-us/library/windows/desktop/ms632644(v=vs.85).aspx。   常量表示SETTEXT,这实际上意味着如果使用此常量发送多条消息,记事本中的文本将被替换。

来自:http://www.peterhenell.se/msg/C---AddSend-text-to-notepad-process-using-user32dll-SendMessage-from-your-application

using System;
using System.Text;
using System.Runtime.InteropServices;
using System.Diagnostics;

namespace SendMessageTest
{
    class Program
    {
        [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

        [DllImport("User32.dll")]
        public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);



        static void Main(string[] args)
        {
            DoSendMessage("Sending a message, a message from me to you");
        }



        private static void DoSendMessage(string message)
        {
            Process notepad = Process.Start(new ProcessStartInfo("notepad.exe"));
            notepad.WaitForInputIdle();

            if (notepad != null)
            {
                IntPtr child = FindWindowEx(notepad.MainWindowHandle, new IntPtr(0), "Edit", null);
                SendMessage(child, 0x000C, 0, message);
            }
        }
    }
}