How to open Notepad from a Windows Forms application and place some text in it?

前端 未结 3 1910
抹茶落季
抹茶落季 2021-01-06 03:07

I\'m using VB.NET and Visual Studio 2008.

My question is: How do I open Notepad from a Windows Forms application, and then place some text string in the Notepad wind

相关标签:
3条回答
  • 2021-01-06 03:16

    The trick here is to make a text file, and pass it to Notepad as a command line argument, or, if Notepad is the default application for ".txt", you can shell straight to the filename.

    Creating/editing textfile through VB.NET

    Launch and watch a process from VB.NET 2010

    You can use the arguments collection ProcessStartInfo to pass the filename if required.

    0 讨论(0)
  • 2021-01-06 03:17

    The easiest approach is to write a text-file, then open that, rather than the other way round.

    You can use System.File.IO.WriteAllText, and the System.Diagnostics.Process class.

    A quick code-sample would be along these lines:

    File.WriteAllText (
        @"C:\temp\myFile.txt", 
        "This is my letter header\nIt has a new-line in it")
    Process.Start("notepad.exe", @"C:\temp\myFile.txt");
    
    0 讨论(0)
  • 2021-01-06 03:39
    1. Use Process.Start with the property ShellExecute set to true;
    2. Use the clipboard: http://www.dreamincode.net/forums/topic/40011-how-do-i-put-text-in-another-program/

    Update

    Process.Start returns a Process object which has a MainWindowHandle property. Use that handle when sending text instead of the FindWindow in the above mentioned link.

    Update 2

    Some code

    Const WM_SETTEXT As Integer = &HC
    <DllImport("user32.dll")> _
    Private Shared Function SendMessage(hWnd As IntPtr, Msg As Integer, wParam As IntPtr, <MarshalAs(UnmanagedType.LPStr)> lParam As String) As IntPtr
    End Function
    
    Private Shared Sub Main()
        'ProcessStartInfo is used to instruct the Process class
        ' on how to start a new process. The UseShellExecute tells
        ' the process class that it (amongst other) should search for the application
        ' using the PATH environment variable.
        Dim pis As ProcessStartInfo = New ProcessStartInfo("notepad.exe")
        pis.UseShellExecute = True
    
        ' The process class is used to start the process
        ' it returns an object which can be used to control the started process
        Dim notepad As Process = Process.Start(pis)
    
        ' SendMessage is used to send the clipboard message to notepad's
        ' main window.
        Dim textToAdd As String = "Text to add"
        SendMessage(notepad.MainWindowHandle, WM_SETTEXT, IntPtr.Zero, textToAdd)
    End Sub
    
    0 讨论(0)
提交回复
热议问题