Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Skrivarnamn ur CommonDialog för printer?

Postades av 2001-02-20 13:06:00 - Lars Sellbom, i forum visual basic - allmänt, Tråden har 5 Kommentarer och lästs av 890 personer

Skulle behöva få tag i vald skrivare i klartext, tex "HP Laserjet 6P" ur CommonDialog för printer.

Kan tänka mig att man skall nyttja CommonDialog1.hDC, men hur sätter man flags etc för att Text1.text = CommonDialog1.hDC skall ge skrivarnamet i klartext, eller är jag inne på fel väg?


Svara

Sv: Skrivarnamn ur CommonDialog för printer?

Postades av 2001-02-20 18:00:00 - Peter Holm

Ja det är ju lite enklare än att böka runt med en CommonDialog

Starta ett nytt projekt.
Lägg in en command1
klistra in följande:

===========================================

Private Sub Command1_Click()
'Lista namnet på standardskrivaren
Debug.Print Printer.DeviceName
End Sub

===========================================

Printerobjektet är det du skall pyssla med när det gäller utskrifter.

Private Sub Command1_Click()
'Lista namnet på alla installerade skrivare
Dim printer_ as Printer
For Each printer_ in Printers
Debug.Print printer_.DeviceName
Next printer_
End Sub

Ja det finns mycket roligt........

/peterh


Svara

Sv: Skrivarnamn ur CommonDialog för printer?

Postades av 2001-02-20 19:26:00 - Andreas Hillqvist

Tycker Peters Lösning är mycket bra, lätt att ladda en comboruta med alternativen.

Men om du vill utmana ödet och använda api anrop.
Så kan du göra såhär:

Option Explicit

Private Const GMEM_MOVEABLE = &H2
Private Const GMEM_ZEROINIT = &H40

Private Const CCHDEVICENAME = 32
Private Const CCHFORMNAME = 32

Private Type POINTAPI
x As Long
y As Long
End Type

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Type PageSetupDlg
lStructSize As Long
hwndOwner As Long
hDevMode As Long
hDevNames As Long
flags As Long
ptPaperSize As POINTAPI
rtMinMargin As RECT
rtMargin As RECT
hInstance As Long
lCustData As Long
lpfnPageSetupHook As Long
lpfnPagePaintHook As Long
lpPageSetupTemplateName As String
hPageSetupTemplate As Long
End Type


Private Type DEVMODE
dmDeviceName As String * CCHDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCHFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Long
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type

Private Type DEVNAMES
wDriverOffset As Integer
wDeviceOffset As Integer
wOutputOffset As Integer
wDefault As Integer
extra As String * 100
End Type

Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function PageSetupDlg Lib "comdlg32.dll" Alias "PageSetupDlgA" (pPagesetupdlg As PageSetupDlg) As Long



Public Function ShowPageSetupDlg(Optional OwnerForm As Form) As String
Dim lReturn As Long
Dim pPagesetupdlg As PageSetupDlg
Dim lpDevMode As Long
Dim lpDevName As Long
Dim DEVMODE As DEVMODE
Dim DEVNAMES As DEVNAMES

With pPagesetupdlg
.lStructSize = Len(pPagesetupdlg)
If OwnerForm Is Nothing Then
.hwndOwner = 0&
Else
.hwndOwner = OwnerForm.hWnd
End If

.hDevMode = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, Len(DEVMODE))
lpDevMode = GlobalLock(.hDevMode)
If lpDevMode > 0 Then
CopyMemory ByVal lpDevMode, DEVMODE, Len(DEVMODE)
lReturn = GlobalUnlock(.hDevMode)
End If

With DEVNAMES
.wDriverOffset = 8
.wDeviceOffset = .wDriverOffset + 1 + Len(Printer.DriverName)
.wOutputOffset = .wDeviceOffset + 1 + Len(Printer.Port)
.wDefault = 0
End With

With Printer
DEVNAMES.extra = .DriverName & vbNullChar & .DeviceName & vbNullChar & .Port & vbNullChar
End With

.hDevNames = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, Len(DEVNAMES))
lpDevName = GlobalLock(.hDevNames)
If lpDevName > 0 Then
CopyMemory ByVal lpDevName, DEVNAMES, Len(DEVNAMES)
lReturn = GlobalUnlock(lpDevName)
End If

'flags As Long
'ptPaperSize As POINTAPI
'rtMinMargin As RECT
'rtMargin As RECT
'hInstance As Long
'lCustData As Long
'lpfnPageSetupHook As Long
'lpfnPagePaintHook As Long
'lpPageSetupTemplateName As String
'hPageSetupTemplate As Long
End With

lReturn = PageSetupDlg(pPagesetupdlg)

If lReturn Then
With pPagesetupdlg
lpDevName = GlobalLock(.hDevNames)
CopyMemory DEVNAMES, ByVal lpDevName, Len(DEVNAMES)
lReturn = GlobalUnlock(lpDevName)
GlobalFree .hDevNames

lpDevMode = GlobalLock(.hDevMode)
CopyMemory DEVMODE, ByVal lpDevMode, Len(DEVMODE)
lReturn = GlobalUnlock(.hDevMode)
GlobalFree .hDevMode

ShowPageSetupDlg = Left(DEVMODE.dmDeviceName, InStr(DEVMODE.dmDeviceName, vbNullChar) - 1)
'flags As Long
'ptPaperSize As POINTAPI
'rtMinMargin As RECT
'rtMargin As RECT
'hInstance As Long
'lCustData As Long
'lpfnPageSetupHook As Long
'lpfnPagePaintHook As Long
'lpPageSetupTemplateName As String
'hPageSetupTemplate As Long
End With
End If

End Function



Svara

Sv: Skrivarnamn ur CommonDialog för printer?

Postades av 2001-02-20 19:36:00 - Peter Holm

Ja just det ja.... Kort och koncist !?!?! ;)


Svara

Sv: Skrivarnamn ur CommonDialog för printer?

Postades av 2001-02-20 19:58:00 - Andreas Hillqvist

"Messar" ju också lite med minnet. Kan vara farligt i VB... :O)

Det beror ju lite på vad man vill göra.
Om man bara ska välj en skrivar är det ju utan tvekan lätt och smidigt att använda Printer och Printers.
Men om du skall ändra inställningarna för skrivaren och också kunna välja vilken skrivare. Så har ju API anropet en klar fördel. Det är inte så mycket kod som det ser ut. Deklerationerna tar lite plats men man sliper ju distrubera och använd commondialogs kontrollen. Vilket jag tycker är mer till besvär än nytta

Kanske är lite för "kåt" på API anrop. Får ju erkänna det... :O)


Svara

Sv: Skrivarnamn ur CommonDialog för printer?

Postades av 2001-02-21 15:22:00 - Lars Sellbom

Tack alla som hjälpt mig med problemet, valde ett API anrop till sist funkar utmärkt!!


Lasse


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 155
27 952
271 704
753
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies