By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
429,423 Members | 1,601 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 429,423 IT Pros & Developers. It's quick & easy.

Open a Text File in Notepad using VB.Net 2005

P: n/a

I have what seems to be such a simple thing yet I cannot figure out how
to do it.

I am using a streamwriter to build a text file. At the end of the
process I want to open that same text file in notepad so the user can
see what was built.

I cannot for the life of me figure out how to get the text file to open
up in notepad on the screen. All the processes I have tried opens the
file into the filestream again.

*** Sent via Developersdex http://www.developersdex.com ***
Mar 15 '06 #1
Share this Question
Share on Google+
13 Replies


P: n/a
System.Diagnostics.Process.Start("notepad.exe", "mydocument.txt")

"Chris Johnson" <cj******@cskauto.com> wrote in message
news:%2***************@TK2MSFTNGP12.phx.gbl...

I have what seems to be such a simple thing yet I cannot figure out how
to do it.

I am using a streamwriter to build a text file. At the end of the
process I want to open that same text file in notepad so the user can
see what was built.

I cannot for the life of me figure out how to get the text file to open
up in notepad on the screen. All the processes I have tried opens the
file into the filestream again.

*** Sent via Developersdex http://www.developersdex.com ***

Mar 15 '06 #2

P: n/a
> System.Diagnostics.Process.Start("notepad.exe", "mydocument.txt")

This is correct and it always opens the file in Notepad. As many of us
use different program as default editor, it is better to automatically
open the file in associated application. That's even easier:

System.Diagnostics.Process.Start("mydocument.txt")
--
Peter Macej
Helixoft - http://www.vbdocman.com
VBdocman - Automatic generator of technical documentation for VB, VB
..NET and ASP .NET code
Mar 15 '06 #3

P: n/a
Hi Peter,
This was something that I also wanted to do. I would like to include the
program installation path in the file name and tried:

System.Diagnostics.Process.Start(Application.Start upPath & "\filename.pdf")

But this did not work I have to use:

System.Diagnostics.Process.Start("C:\Program
Files\Myprograms\Program\filename.pdf")

which works OK.

Is there a way to include the program path as the program could be installed
in a different location?
--
Cheers
Chas

***************
* Spectrum is Green *
***************
"Peter Macej" wrote:
System.Diagnostics.Process.Start("notepad.exe", "mydocument.txt")


This is correct and it always opens the file in Notepad. As many of us
use different program as default editor, it is better to automatically
open the file in associated application. That's even easier:

System.Diagnostics.Process.Start("mydocument.txt")
--
Peter Macej
Helixoft - http://www.vbdocman.com
VBdocman - Automatic generator of technical documentation for VB, VB
..NET and ASP .NET code

Mar 15 '06 #4

P: n/a

"Chas Large" <Ch*******@discussions.microsoft.com> wrote in message
news:43**********************************@microsof t.com...
System.Diagnostics.Process.Start(Application.Start upPath &
"\filename.pdf")

But this did not work ...


Look at the ProcessStartInfo class - its UseShellExecute property allows
you to "launch" files just like explorer.

Imports SI=System.IO

Dim ps as New ProcessStartInfo()
With ps
.Filename = SI.Path.Combine( Application.StartupPath, "filename.pdf" )
.UseShellEexecute = True
End With

Dim p as New Process
p.StartInfo = ps
p.Start()

HTH,
Phill W.
Mar 15 '06 #5

P: n/a
What is the difference between
UseShellExecute=True and UseShellExecute=False?

When should each be used?

"Phill W." <p-***********@o-p-e-n.a-c.u-k> wrote in message
news:dv**********@yarrow.open.ac.uk...

"Chas Large" <Ch*******@discussions.microsoft.com> wrote in message
news:43**********************************@microsof t.com...
System.Diagnostics.Process.Start(Application.Start upPath &
"\filename.pdf")

But this did not work ...


Look at the ProcessStartInfo class - its UseShellExecute property allows
you to "launch" files just like explorer.

Imports SI=System.IO

Dim ps as New ProcessStartInfo()
With ps
.Filename = SI.Path.Combine( Application.StartupPath, "filename.pdf" )
.UseShellEexecute = True
End With

Dim p as New Process
p.StartInfo = ps
p.Start()

HTH,
Phill W.

Mar 15 '06 #6

P: n/a
Hi Phil,
Thanks for the speedy response.

I tried the code you suggest but when run it debugs out at

p.Start()

with the error:
--------------------------------------------------------------------------------------
An unhandled exception of type 'System.ComponentModel.Win32Exception'
occurred in system.dll

Additional information: The system cannot find the file specified
--------------------------------------------------------------------------------------

I have double checked the code and ensured the Imports is OK.

I also tried adding a backslash to the filename "\filename.pdf" but still
get the error

Any ideas?

BTW whats HTH, ?

Here's the code I used:

Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MenuItem4.Click
'Open My File.PDF
Dim ps As New ProcessStartInfo
With ps
.FileName = SI.Path.Combine(Application.StartupPath, "\My
File.pdf")
.UseShellExecute = True
End With
Dim p As New Process
p.StartInfo = ps
p.Start()
End Sub
--
Cheers
Chas

***************
* Spectrum is Green *
***************
"Phill W." wrote:

"Chas Large" <Ch*******@discussions.microsoft.com> wrote in message
news:43**********************************@microsof t.com...
System.Diagnostics.Process.Start(Application.Start upPath &
"\filename.pdf")

But this did not work ...


Look at the ProcessStartInfo class - its UseShellExecute property allows
you to "launch" files just like explorer.

Imports SI=System.IO

Dim ps as New ProcessStartInfo()
With ps
.Filename = SI.Path.Combine( Application.StartupPath, "filename.pdf" )
.UseShellEexecute = True
End With

Dim p as New Process
p.StartInfo = ps
p.Start()

HTH,
Phill W.

Mar 15 '06 #7

P: n/a
Are you testing this through the debugger? If so, the StartupPath may
not have the value you expect.

I recommend you step through the code and then inspect the value of the
..FileName property and make sure that your file exists in that location.

Mar 15 '06 #8

P: n/a
Hi Chris,
Thought that was it as I had only tested the debugger but then i rebuilt the
app and installer, installed and tested and got the same error.

BTW the line:

System.Diagnostics.Process.Start("C:\Program Files\My Programs\Program\read
me.pdf")

Works just fine in both the debug and install versions so the file must be
in the right place.
--
Cheers
Chas

***************
* Spectrum is Green *
***************
"Chris Dunaway" wrote:
Are you testing this through the debugger? If so, the StartupPath may
not have the value you expect.

I recommend you step through the code and then inspect the value of the
..FileName property and make sure that your file exists in that location.

Mar 15 '06 #9

P: n/a
And then I saw what I wrote. Of course it will work as it specifies the path.

I checked the debug path and yes the file was not in the BIN folder as
specified. I put a copy there, ran it again and still got the error.

Would it be anything to do with DOS Filenames or Long filenames or spaces in
the file name?
--
Cheers
Chas

***************
* Spectrum is Green *
***************
"Chas Large" wrote:
Hi Chris,
Thought that was it as I had only tested the debugger but then i rebuilt the
app and installer, installed and tested and got the same error.

BTW the line:

System.Diagnostics.Process.Start("C:\Program Files\My Programs\Program\read
me.pdf")

Works just fine in both the debug and install versions so the file must be
in the right place.
--
Cheers
Chas

***************
* Spectrum is Green *
***************
"Chris Dunaway" wrote:
Are you testing this through the debugger? If so, the StartupPath may
not have the value you expect.

I recommend you step through the code and then inspect the value of the
..FileName property and make sure that your file exists in that location.

Mar 15 '06 #10

P: n/a
Sometimes Application.StartupPath doesn't always return the exact path to
the executing assembly. That is why I use this little function:

Private Function mypath() As String

Return _

Path.GetDirectoryName([Assembly].GetExecutingAssembly().Location)

End Function

Here is an example of using it, using your code and mine:

mports System.Reflection

Imports System.IO

Public Class Form1

Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New()

MyBase.New()

'This call is required by the Windows Form Designer.

InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list.

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

If disposing Then

If Not (components Is Nothing) Then

components.Dispose()

End If

End If

MyBase.Dispose(disposing)

End Sub

'Required by the Windows Form Designer

Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer

'It can be modified using the Windows Form Designer.

'Do not modify it using the code editor.

Friend WithEvents Button1 As System.Windows.Forms.Button

<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

Me.Button1 = New System.Windows.Forms.Button

Me.SuspendLayout()

'

'Button1

'

Me.Button1.Location = New System.Drawing.Point(144, 40)

Me.Button1.Name = "Button1"

Me.Button1.TabIndex = 0

Me.Button1.Text = "Button1"

'

'Form1

'

Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)

Me.ClientSize = New System.Drawing.Size(616, 266)

Me.Controls.Add(Me.Button1)

Me.Name = "Form1"

Me.Text = "Form1"

Me.ResumeLayout(False)

End Sub

#End Region

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

'Open My File.PDF

Dim ps As New ProcessStartInfo

With ps

..FileName = mypath() & ("\Manual.pdf")' name of pdf file located in the Bin
Folder in this test app.

..UseShellExecute = True

End With

Dim p As New Process

p.StartInfo = ps

p.Start()

End Sub

Private Function mypath() As String

Return _

Path.GetDirectoryName([Assembly].GetExecutingAssembly().Location)

End Function

End Class

The above code works. I changed a couple of things from what you had.

james


"Chas Large" <Ch*******@discussions.microsoft.com> wrote in message
news:D8**********************************@microsof t.com...
Hi Phil,
Thanks for the speedy response.

I tried the code you suggest but when run it debugs out at

p.Start()

with the error:
--------------------------------------------------------------------------------------
An unhandled exception of type 'System.ComponentModel.Win32Exception'
occurred in system.dll

Additional information: The system cannot find the file specified
--------------------------------------------------------------------------------------

I have double checked the code and ensured the Imports is OK.

I also tried adding a backslash to the filename "\filename.pdf" but still
get the error

Any ideas?

BTW whats HTH, ?

Here's the code I used:

Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MenuItem4.Click
'Open My File.PDF
Dim ps As New ProcessStartInfo
With ps
.FileName = SI.Path.Combine(Application.StartupPath, "\My
File.pdf")
.UseShellExecute = True
End With
Dim p As New Process
p.StartInfo = ps
p.Start()
End Sub
--
Cheers
Chas

***************
* Spectrum is Green *
***************
"Phill W." wrote:

"Chas Large" <Ch*******@discussions.microsoft.com> wrote in message
news:43**********************************@microsof t.com...
> System.Diagnostics.Process.Start(Application.Start upPath &
> "\filename.pdf")
>
> But this did not work ...


Look at the ProcessStartInfo class - its UseShellExecute property allows
you to "launch" files just like explorer.

Imports SI=System.IO

Dim ps as New ProcessStartInfo()
With ps
.Filename = SI.Path.Combine( Application.StartupPath,
"filename.pdf" )
.UseShellEexecute = True
End With

Dim p as New Process
p.StartInfo = ps
p.Start()

HTH,
Phill W.

Mar 15 '06 #11

P: n/a
Forgot to mention in my previous post, the filename(s) won't make a
difference as long as the pdf file is in the BIN folder where the executing
assembly is located. I tried it with spaces, short file names and long file
names and it works. Just won't work with reserved characters (which you
know).
james

"Chas Large" <Ch*******@discussions.microsoft.com> wrote in message
news:4E**********************************@microsof t.com...
And then I saw what I wrote. Of course it will work as it specifies the
path.

I checked the debug path and yes the file was not in the BIN folder as
specified. I put a copy there, ran it again and still got the error.

Would it be anything to do with DOS Filenames or Long filenames or spaces
in
the file name?
--
Cheers
Chas

***************
* Spectrum is Green *
***************
"Chas Large" wrote:
Hi Chris,
Thought that was it as I had only tested the debugger but then i rebuilt
the
app and installer, installed and tested and got the same error.

BTW the line:

System.Diagnostics.Process.Start("C:\Program Files\My
Programs\Program\read
me.pdf")

Works just fine in both the debug and install versions so the file must
be
in the right place.
--
Cheers
Chas

***************
* Spectrum is Green *
***************
"Chris Dunaway" wrote:
> Are you testing this through the debugger? If so, the StartupPath may
> not have the value you expect.
>
> I recommend you step through the code and then inspect the value of the
> ..FileName property and make sure that your file exists in that
> location.
>
>

Mar 15 '06 #12

P: n/a
Hi Chas,
System.Diagnostics.Process.Start(Application.Start upPath & "\filename.pdf")
should work in your case. However, remember that during design time, your app
runs from projectname\bin folder, thus the Application.StartupPath is this
folder (not C:\Program Files\Myprograms\Program\filename.pdf"). So, to test
it, you need to put a copy of filename.pdf into the bin folder.
Hope this helps.
VHD50.

"Chas Large" wrote:
Hi Peter,
This was something that I also wanted to do. I would like to include the
program installation path in the file name and tried:

System.Diagnostics.Process.Start(Application.Start upPath & "\filename.pdf")

But this did not work I have to use:

System.Diagnostics.Process.Start("C:\Program
Files\Myprograms\Program\filename.pdf")

which works OK.

Is there a way to include the program path as the program could be installed
in a different location?
--
Cheers
Chas

***************
* Spectrum is Green *
***************
"Peter Macej" wrote:
System.Diagnostics.Process.Start("notepad.exe", "mydocument.txt")


This is correct and it always opens the file in Notepad. As many of us
use different program as default editor, it is better to automatically
open the file in associated application. That's even easier:

System.Diagnostics.Process.Start("mydocument.txt")
--
Peter Macej
Helixoft - http://www.vbdocman.com
VBdocman - Automatic generator of technical documentation for VB, VB
..NET and ASP .NET code

Mar 17 '06 #13

P: n/a


*** Sent via Developersdex http://www.developersdex.com ***
Apr 4 '06 #14

This discussion thread is closed

Replies have been disabled for this discussion.