473,700 Members | 2,500 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

How to OPEN native PRINTER DIALOG -- Please HELP !!

I am doing my own PrintDialog, and have placed there a combo with the
printer names, as in the PrintDialog provided by VB.NET.

Here is the question: how do I open the native windows printer dialog
for the current printer, so that my current
PrintDocument.P rinterSettings will be set according to the User choices
?

Thanks
-Pamela
My question in code. Assume you have ceated a MyPrintDialog
form with a combo box "ComboBoxPrinte rNames" listing the printers and a
button "ButtonSelected PrinterProperti es"
to set the current printer properties.

---------------------------------------
Private Sub ButtonSelectedP rinterPropertie s_Click(ByVal sender As
System.Object, ByVal e As System.EventArg s) Handles
ButtonSelectedP rinterPropertie s.Click

Me.PrintDocumen t.PrinterSettin gs.PrinterName =
Me.ComboBoxPrin terNames.Select edText
If Not Me.PrintDocumen t.PrinterSettin gs.IsValid Then
MsgBox("Invalid printer", MsgBoxStyle.Inf ormation)
Exit Sub
End If

Me.OpenPrinterP ropertiesDialog (PrintDocument)
End Sub

Sub OpenPrinterProp ertiesDialog(By Val PrintDocument As
PrintDocument)

' ???????? my question: how to open the windows dialog for
setting PrintDocument.P rinterSettings

End Sub
--------------------------------------------

Nov 21 '05 #1
11 9882
Hi,

<pa***********@ libero.it> wrote in message
news:11******** **************@ o13g2000cwo.goo glegroups.com.. .
I am doing my own PrintDialog, and have placed there a combo with the
printer names, as in the PrintDialog provided by VB.NET.

Here is the question: how do I open the native windows printer dialog
for the current printer, so that my current
PrintDocument.P rinterSettings will be set according to the User choices
?

Thanks
-Pamela
My question in code. Assume you have ceated a MyPrintDialog
form with a combo box "ComboBoxPrinte rNames" listing the printers and a
button "ButtonSelected PrinterProperti es"
to set the current printer properties.

---------------------------------------


Without much guarantee though it should be possible with a few native
functions:

Public Class YourPrinterSett ingsDialog
' native functions
Private Declare Auto Function GlobalLock Lib "kernel32.d ll" _
(ByVal handle As IntPtr) As IntPtr
Private Declare Auto Function GlobalUnlock Lib "kernel32.d ll" _
(ByVal handle As IntPtr) As Integer
Private Declare Auto Function GlobalFree Lib "kernel32.d ll" _
(ByVal handle As IntPtr) As IntPtr
Private Declare Auto Function DocumentPropert ies Lib "winspool.d rv" _
(ByVal hWnd As IntPtr, ByVal hPrinter As IntPtr, _
ByVal pDeviceName As String, ByVal pDevModeOutput As IntPtr, _
ByVal pDevModeInput As IntPtr, ByVal fMode As Int32) As Integer
Private Sub ButtonSelectedP rinterPropertie s_Click( ... )...
' only change PrinterName when it is required, NOT each time the user
presses
' the button, setting a printername resets some of the settings
If (ComboBoxPrinte rNames.Selected Index <> -1) Then
If (Me.PrintDocume nt.PrinterSetti ngs.PrinterName <>
ComboBoxPrinter Names.Text) Then
Me.PrintDocumen t.PrinterSettin gs.PrinterName =
ComboBoxPrinter Names.Text
End If
If Me.PrintDocumen t.PrinterSettin gs.IsValid Then
Me.OpenPrinterP ropertiesDialog (PrintDocument. PrinterSettings )
Else
MsgBox("Invalid printersettings ", MsgBoxStyle.Inf ormation)
End If
Else
MsgBox("Choose a printer", MsgBoxStyle.Inf ormation)
End If
End Sub

Sub OpenPrinterProp ertiesDialog(By Val Settings As PrinterSettings )
' PrinterSettings +PageSettings -> hDEVMODE
Dim hDevMode As IntPtr = _
Settings.GetHde vmode(Settings. DefaultPageSett ings)

' Show Dialog ( [In,Out] pDEVMODE )
Dim pDevMode As IntPtr = GlobalLock(hDev Mode)
DocumentPropert ies(Me.Handle, IntPtr.Zero, _
Settings.Printe rName, pDevMode, pDevMode, 14)
GlobalUnlock(hD evMode)

' hDEVMODE -> PrinterSettings +PageSettings
Settings.SetHde vmode(hDevMode)
Settings.Defaul tPageSettings.S etHdevmode(hDev Mode)

' cleanup
GlobalFree(hDev Mode)
End Sub

End Class

HTH,
Greetings
Nov 21 '05 #2
Dear Bart,

Really THANK YOU VERY MUCH !!! for your contribution.

You also provide some additional advice. Let me study and try to
implement it.

This one is very important for my work. Infact the PrintDialog provided
with .NET is too primitive
to be useful in real programs, and once one rewrite one cannot escape
the task to manually call the printer setup.

I will work on it and will probably poput later with some question, in
case I have problems.

I am very grateful,

-Pamela

Nov 21 '05 #3
Dear Burt,

I have tried your code (on XP). Actually it is quite complete. You
have practically
done the all job. I also appreciated your correction about setting
the printer name.
You are really an angel!

I have not tried yet to print because now its night here and I am
not at my office,
but the printer properties dialog pops up fine. In case of problems
I will tell you.

If I may, I would need some further info for some refinements.
I am loading the printer names in a combo (or perhaps I will use a
treeview):
with something like:

-------------------------------------
Private Sub YourPrinterSett ingsDialog_Load (ByVal sender...) Handles
MyBase.Load

Dim PrinterNames As New ArrayList
For Each PrinterName As String In
PrinterSettings .InstalledPrint ers
Try
PrinterNames.Ad d(PrinterName)
Catch
End Try
Next PrinterName
Me.ComboBoxPrin terNames.Items. AddRange(Printe rNames.ToArray)

End Sub
------------------------------------

I need to recognize: 1. the Default Printer, 2. Network printers, to
change the appearance
of their icons. So, I guess, I need 2 boolean functions:

function IsDefaulPrinter (PrinterName as string) as boolean
function IsNetworkPrinte r(PrinterName as string) as boolean
(others assumed local, I guess)

Do you know how to make these functions?
Any suggestion is very welcome. Thanks,

-Pamela

Nov 21 '05 #4
Hi,

<pa***********@ libero.it> wrote in message
news:11******** **************@ g49g2000cwa.goo glegroups.com.. .
Dear Burt,

I have tried your code (on XP). Actually it is quite complete. You
have practically
done the all job. I also appreciated your correction about setting
the printer name.
You are really an angel!

I have not tried yet to print because now its night here and I am
not at my office,
but the printer properties dialog pops up fine. In case of problems
I will tell you.

If I may, I would need some further info for some refinements.
I am loading the printer names in a combo (or perhaps I will use a
treeview):
with something like:

-------------------------------------
Private Sub YourPrinterSett ingsDialog_Load (ByVal sender...) Handles
MyBase.Load

Dim PrinterNames As New ArrayList
For Each PrinterName As String In
PrinterSettings .InstalledPrint ers
Try
PrinterNames.Ad d(PrinterName)
Catch
End Try
Next PrinterName
Me.ComboBoxPrin terNames.Items. AddRange(Printe rNames.ToArray)

End Sub
------------------------------------

I need to recognize: 1. the Default Printer, 2. Network printers, to
change the appearance
of their icons. So, I guess, I need 2 boolean functions:

function IsDefaulPrinter (PrinterName as string) as boolean
function IsNetworkPrinte r(PrinterName as string) as boolean
(others assumed local, I guess)
I understand you want to customize the PrintDialog, is there anything in
particular that you want to change or add, it is possible to create your
own, but it will involve a lot of pinvoke.

About default and network printers, it's not that simple, if you want to do
this for all printers then you need to think about speed. You can use the
native function EnumPrinters(se e MSDN) but it gets complicated because a
different level is needed for wxp/2000 or w9x/me.

The example shows you how you can do it using 2 additional classes:
PrinterInfo (name, isdefault, isnetwork)
PrinterApi (thin wrapper around w32 native Printer Functions)

YourPrintDialog .vb
------------------
Public Class YourPrintDialog
' ....
Private Sub LoadPrinters()
ComboBoxPrinter Names.Clear()

For Each pi As PrinterInfo In PrinterInfo.Ins talledPrinters
Console.WriteLi ne("Name={0} Def={1} Network={2}", _
pi.Name, pi.IsDefault, pi.IsNetwork)

ComboBoxPrinter Names.Items.Add (pi.Name)
If (pi.IsDefault) Then ComboBoxPrinter Names.Text = pi.Name
Next
End Sub
' ....
End Class
PrinterInfo.vb
--------------
Public Class PrinterInfo

Public Name As String
Public IsDefault As Boolean
Public IsNetwork As Boolean

Public Shared ReadOnly Property InstalledPrinte rs() As PrinterInfo()
Get
Dim infos As New ArrayList
If (Environment.OS Version.Platfor m = PlatformID.Win3 2NT) Then
' window xp,2000
Dim DefName As String = PrinterApi.GetD efPrinter()

For Each pi4 As PrinterApi.PRIN TER_INFO_4 In _
PrinterApi.Enum Info4( _
PrinterApi.PRIN TER_ENUM_LOCAL Or _
PrinterApi.PRIN TER_ENUM_CONNEC TIONS)

Dim pi As New PrinterInfo
pi.Name = pi4.PrinterName
pi.IsDefault = Equals(pi4.Prin terName, DefName)
pi.IsNetwork = (pi4.Attributes And
PrinterApi.PRIN TER_ATTRIBUTE_N ETWORK) > 0
infos.Add(pi)
Next
Else
' windows 95,98,me
For Each pi5 As PrinterApi.PRIN TER_INFO_5 In _
PrinterApi.Enum Info5(PrinterAp i.PRINTER_ENUM_ LOCAL)
Dim pi As New PrinterInfo
pi.Name = pi5.PrinterName
pi.IsDefault = (pi5.Attributes And
PrinterApi.PRIN TER_ATTRIBUTE_D EFAULT) > 0
pi.IsNetwork = (pi5.Attributes And
PrinterApi.PRIN TER_ATTRIBUTE_N ETWORK) > 0
infos.Add(pi)
Next
End If
Return infos.ToArray(G etType(PrinterI nfo))
End Get
End Property
End Class
PrinterApi.vb
--------------
Imports System.Runtime. InteropServices
Imports System.Text

Public Class PrinterApi

Private Declare Auto Function EnumPrinters Lib "winspool.d rv" ( _
ByVal flags As Int32, ByVal name As String, ByVal level As Int32, _
ByVal pPrinterEnum As IntPtr, ByVal cbBuf As Int32, _
ByRef pcbNeeded As Int32, ByRef pcReturned As Int32) As Int32

Private Declare Auto Function GetDefaultPrint er Lib "winspool.d rv" ( _
ByVal szBuffer As StringBuilder, _
ByRef cchBuffer As Int32) As Int32

<StructLayout(L ayoutKind.Seque ntial, CharSet:=CharSe t.Auto)> _
Public Class PRINTER_INFO_4
Public PrinterName As String
Public ServerName As String
Public Attributes As Integer
End Class

<StructLayout(L ayoutKind.Seque ntial, CharSet:=CharSe t.Auto)> _
Public Class PRINTER_INFO_5
Public PrinterName As String
Public PortName As String
Public Attributes As Integer
Public DeviceNotSelect edTimeout As Integer
Public TransmissionRet ryTimeout As Integer
End Class

Public Const PRINTER_ATTRIBU TE_NETWORK As Int32 = &H10
Public Const PRINTER_ENUM_CO NNECTIONS As Int32 = &H4
Public Const PRINTER_ENUM_LO CAL As Int32 = &H2
Public Const PRINTER_ATTRIBU TE_DEFAULT As Int32 = &H4

Public Shared Function GetDefPrinter() As String
Dim sbName As New StringBuilder(3 2)
GetDefaultPrint er( sbName, 32 )
return sbName.ToString ()

End Function

Public Shared Function EnumInfo4(ByVal Flags As Int32) As PRINTER_INFO_4( )
' level 4 enum
Return DirectCast( _
EnumInfo(4, Flags, GetType(PRINTER _INFO_4)), _
PRINTER_INFO_4( ))

End Function

Public Shared Function EnumInfo5(ByVal Flags As Int32) As PRINTER_INFO_5( )
' level 5 enum
Return DirectCast( _
EnumInfo(5, Flags, GetType(PRINTER _INFO_5)), _
PRINTER_INFO_5( ))

End Function

Private Shared Function EnumInfo(ByVal Level As Int32, _
ByVal Flags As Int32, ByVal InfoType As Type) As Object()

Dim cbNeeded As Int32, cReturned As Int32
Dim pBuffer As IntPtr, pBuf As IntPtr
Dim pi As Object
Dim infos As New ArrayList

' enumerate printers
EnumPrinters(Fl ags, Nothing, Level, IntPtr.Zero, 0, cbNeeded, cReturned)
pBuffer = Marshal.AllocHG lobal(cbNeeded)

EnumPrinters(Fl ags, Nothing, Level, pBuffer, cbNeeded, cbNeeded,
cReturned)

pBuf = pBuffer
For i As Int32 = 0 To cReturned - 1
pi = Marshal.PtrToSt ructure(pBuf, InfoType)
infos.Add(pi)

pBuf = New IntPtr(pBuf.ToI nt64() + Marshal.SizeOf( InfoType))
Next
Marshal.FreeHGl obal(pBuffer)
Return infos.ToArray(I nfoType)

End Function
End Class

HTH,
Greetings


Do you know how to make these functions?
Any suggestion is very welcome. Thanks,

-Pamela

Nov 21 '05 #5
Dear Burt,

I don't now what to say.

I should probably take a flight and come to kiss you. Or send Microsoft
a petition to have you appointed MVP.
Thanks!!!!!!!!! !!!!!!!!!!!!!!! !!!!!!!

I * do have to * make my own PrintDialog. I have abolutely no choice
because the application is such that there is no way to use the one
provided with the language.

So the help you are so kindly and generously providing is very crucial
for me.

Let me digest all the material you have provided. I will be back later
with possible
questions.

A presto,

-Pamela

Nov 21 '05 #6
Dear Bart,

I have tried it on XP Professional with a unique default local printer.

It seems it fail to recognize the a default printer. This is the
result:

Name=Microsoft Office Document Image Writer Def=False Network=False

The function:
Public Shared Function GetDefPrinter() As String
returns an empty string.
GetDefaultPrint er is returning an empty stringbuilder.

In particular

Public Class PrinterInfo
.....

For Each pi4 As PrinterApi.PRIN TER_INFO_4 In
PrinterApi.Enum Info4(PrinterAp i.PRINTER_ENUM_ LOCAL Or
PrinterApi.PRIN TER_ENUM_CONNEC TIONS)
Dim pi As New PrinterInfo
pi.Name = pi4.PrinterName
pi.IsDefault = Equals(pi4.Prin terName, DefName)

'------------------------------------------------
when executed on XP with a unique, default, printer I have:

pi4.PrinterName = "Microsoft Office Document Image Writer"
DefName = ""

hence it does not recognize the default printer as such.
PrinterApi.GetD efPrinter is returning empty string

--------------------------------------------------

pi.IsNetwork = (pi4.Attributes And
PrinterApi.PRIN TER_ATTRIBUTE_N ETWORK) > 0
infos.Add(pi)
Next

This is strange it is like the native function GetDefaultPrint er it is
not doing its job (?)

-Pamela

Nov 21 '05 #7
Hi,

<pa***********@ libero.it> wrote in message
news:11******** *************@g 47g2000cwa.goog legroups.com...
Dear Bart,

I have tried it on XP Professional with a unique default local printer.

It seems it fail to recognize the a default printer. This is the
result:

Name=Microsoft Office Document Image Writer Def=False Network=False

The function:
Public Shared Function GetDefPrinter() As String
returns an empty string.
GetDefaultPrint er is returning an empty stringbuilder.
I think it is caused because the Name is longer then 32 characters (which is
currently the limit inside GetDefPrinter() but also in PRINTER_INFO_4/5), if
you can try it with a printer that has a shorter name, i will look how to
deal with this and get back to you later.

HTH,
Greetings

In particular

Public Class PrinterInfo
....

For Each pi4 As PrinterApi.PRIN TER_INFO_4 In
PrinterApi.Enum Info4(PrinterAp i.PRINTER_ENUM_ LOCAL Or
PrinterApi.PRIN TER_ENUM_CONNEC TIONS)
Dim pi As New PrinterInfo
pi.Name = pi4.PrinterName
pi.IsDefault = Equals(pi4.Prin terName, DefName)

'------------------------------------------------
when executed on XP with a unique, default, printer I have:

pi4.PrinterName = "Microsoft Office Document Image Writer"
DefName = ""

hence it does not recognize the default printer as such.
PrinterApi.GetD efPrinter is returning empty string

--------------------------------------------------

pi.IsNetwork = (pi4.Attributes And
PrinterApi.PRIN TER_ATTRIBUTE_N ETWORK) > 0
infos.Add(pi)
Next

This is strange it is like the native function GetDefaultPrint er it is
not doing its job (?)

-Pamela

Nov 21 '05 #8
Hi,

"Bart Mermuys" <bm************ *@hotmail.com> wrote in message
news:eJ******** ******@TK2MSFTN GP12.phx.gbl...
Hi,

<pa***********@ libero.it> wrote in message
news:11******** *************@g 47g2000cwa.goog legroups.com...
Dear Bart,

I have tried it on XP Professional with a unique default local printer.

It seems it fail to recognize the a default printer. This is the
result:

Name=Microsoft Office Document Image Writer Def=False Network=False

The function:
Public Shared Function GetDefPrinter() As String
returns an empty string.
GetDefaultPrint er is returning an empty stringbuilder.
I think it is caused because the Name is longer then 32 characters (which
is currently the limit inside GetDefPrinter() but also in
PRINTER_INFO_4/5), if you can try it with a printer that has a shorter
name, i will look how to deal with this and get back to you later.


Oh, PRINTER_INFO4/5.PrinterName isn't limited to 32 character, so i
shouldn't have limited GetDefPrinter, my mistake.

Corrected code for GetDefPrinter inside PrinterApi:

Public Shared Function GetDefPrinter() As String
Dim len As Integer
Dim sbName As StringBuilder

GetDefaultPrint er(Nothing, len)
sbName = New StringBuilder(l en)

GetDefaultPrint er(sbName, len)
Return sbName.ToString ()
End Function

HTH,
Greetings


HTH,
Greetings

In particular

Public Class PrinterInfo
....

For Each pi4 As PrinterApi.PRIN TER_INFO_4 In
PrinterApi.Enum Info4(PrinterAp i.PRINTER_ENUM_ LOCAL Or
PrinterApi.PRIN TER_ENUM_CONNEC TIONS)
Dim pi As New PrinterInfo
pi.Name = pi4.PrinterName
pi.IsDefault = Equals(pi4.Prin terName, DefName)

'------------------------------------------------
when executed on XP with a unique, default, printer I have:

pi4.PrinterName = "Microsoft Office Document Image Writer"
DefName = ""

hence it does not recognize the default printer as such.
PrinterApi.GetD efPrinter is returning empty string

--------------------------------------------------

pi.IsNetwork = (pi4.Attributes And
PrinterApi.PRIN TER_ATTRIBUTE_N ETWORK) > 0
infos.Add(pi)
Next

This is strange it is like the native function GetDefaultPrint er it is
not doing its job (?)

-Pamela


Nov 21 '05 #9
Bart,

very good. Now it works. Tomorrow morning I will be able to do more
extensive testing on a networked environment. I will let you know the
result.

Congratulation for your knowledge. I envy you.

Where did you get all that know how? After one reads your code and the
gdi documentation everything seems even obvious, but if I should have
done it only reading the documentation, I would have probably struggled
for months to put things together. How can one become like you? :-)

-Pamela

Nov 21 '05 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
1280
by: rodchar | last post by:
hey all, is there a way to bring up the printer dialog (File/Print) thru code in asp.net? thanks, rodchar
1
1474
by: Tommy Martin | last post by:
I would like to bring up the printer dialog before my report is sent to the printer to allow the user to select another destination and possibly the number of copies. Can anyone steer me in the right direction? Thanks in advance. Tommy
5
3336
by: Diego | last post by:
How do I capture a cancel event of Printer dialog box? Regards, Diego
1
4155
by: Tim Marshall | last post by:
A2003 Most of the time, in past apps, my report routines are usually a preview first and then DoCmd.RunCommand acCmdPrint for the printer dialog. However, I'm now faced with wanting to send a report to a printer of choice withoutthe preview. I'm aware of Albert Kallal's snippet of code that allows you to change the default printer, but I'm wondering if there's any other way?
1
6047
by: empika | last post by:
Hi how do i open a network printer as a file in C#? I can open the printer and write a line to it in vb6 just like this: Open FindPrinter("\\ip123\thePrinter") For Output As #1 Print #1, "Hallo world!" Close #1
5
3531
by: Jon Paal | last post by:
how can I bypass the open/save/cancel dialog box and have the document requested open directly in the application associated with the file type ?
7
4026
by: chakriroxx | last post by:
hi all, i have a question related to document.execCommand(saveAs). i need to know the path of the file selected by the user in the saveAs dialog box. i need to make some changes to the saved file. if not a direct way is there any work around way to find the location of the file saved?
1
8756
by: =?Utf-8?B?T21lZ2FTcXVhcmVk?= | last post by:
have customized PageSetup and Print dialogs that emulate the standard dialogs. I would like to be able to open the "Printer Preferences" dialog by clicking a button (just like can be done on the standard dialogs). (On some Print dialogs (such as in Word and Excel) this button is labelled "Properties". And just to avoid being too consistent, it is labelled "Options" on the Excel PageSetup dialog.) I thought that this would be trivial,...
3
3712
tsubasa
by: tsubasa | last post by:
I am working on a web page that allows a user to review orders that are pending approval. If the user approves the order it will print the order then run an asp page to close the order after it has been printed. How can I check to see if the printer dialog box has closed so that I can execute the next command. Thanks in advance! -Tsu <script language="JavaScript"> function approveorder() { if(box1.checked == false)
0
8726
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9214
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
9075
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
8925
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
6561
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5903
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4404
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
4657
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
2
2392
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.