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 window?
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");
Process.Start
with the property ShellExecute
set to true
; 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.
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With