Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-07-2003, 12:09   #1
uMoR
Registered User
 
Iscritto dal: Aug 2002
Messaggi: 274
[vb] intercettare stampe

devo fare un codicino che mi intercetta le stampe effettuate e in particolar modo il numero dei fogli stampati..
come posso fare ?
uMoR è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2003, 20:40   #2
tas
Senior Member
 
L'Avatar di tas
 
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
Ma dentro ad un particolare software oppure quando lanci una stampa da una qualsiasi applicazione?

Nel primo caso basta analizzare la struttura DEVMODE. Ti riporto un pezzo di codice di una library che ho scritto per le mia applicazioni:
Codice:
Dim lppd As PRINTDLG
Dim dm As DEVMODE
Dim lpdm As Long
Dim ret As Long
Dim copies As Integer

lppd.Flags = PD_RETURNDEFAULT Or PD_RETURNDC
lppd.lStructSize = Len(lppd)

ret = api_PrintDlg(lppd)
m_hdevmode = lppd.hDevMode

lpdm = api_GlobalLock(m_hdevmode)
api_CopyMemory dm, lpdm, Len(dm)
api_GlobalUnlock m_hdevmode

copies = dm.dmCopies
PRINTDLG, DEVMODE, i flags, PrintDlg, GlobalLock, CopyMemory, GlobalUnlock li trovi nel visualizzatore API di VB6.


Se invece devi intercettare questo dato per tutte le applicazioni, presumo sia necessario attivare un hook al sistema, ma non ho la più pallida idea di come fare.
__________________
Chi non cerca trova.
tas è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2003, 21:48   #3
uMoR
Registered User
 
Iscritto dal: Aug 2002
Messaggi: 274
per tutte le applicazioni
uMoR è offline   Rispondi citando il messaggio o parte di esso
Old 14-07-2003, 04:42   #4
matpez
Senior Member
 
L'Avatar di matpez
 
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
Mi sa che ci vuole un hook allo spoiler di stampa, cosi in qlk modo riusciresti a leggere il numero di documenti in coda i sapere il numero...solo che nn ho la + pallida idea di come si faccia
matpez è offline   Rispondi citando il messaggio o parte di esso
Old 14-07-2003, 04:53   #5
matpez
Senior Member
 
L'Avatar di matpez
 
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
Guarda questo codice, ora è un po' presto al mattimo (5.50) per mettermi a ragionare, ma cmq dai parametri nn sembra male:

Codice:
Private Const CCHDEVICENAME = 32
Private Const CCHFORMNAME = 32

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 Integer
    dmPelsWidth As Long
    dmPelsHeight As Long
    dmDisplayFlags As Long
    dmDisplayFrequency As Long
End Type

Private Type PRINTER_INFO_2
   pServerName As String
   pPrinterName As String
   pShareName As String
   pPortName As String
   pDriverName As String
   pComment As String
   pLocation As String
   pDevMode As Long
   pSepFile As String
   pPrintProcessor As String
   pDatatype As String
   pParameters As String
   pSecurityDescriptor As Long
   Attributes As Long
   Priority As Long
   DefaultPriority As Long
   StartTime As Long
   UntilTime As Long
   Status As Long
   JobsCount As Long
   AveragePPM As Long
End Type

Private Type PRINTER_DEFAULTS
  pDatatype As String
  pDevMode As DEVMODE
  DesiredAccess As Long
End Type

Public Enum Printer_Status
   PRINTER_STATUS_READY = &H0
   PRINTER_STATUS_PAUSED = &H1
   PRINTER_STATUS_ERROR = &H2
   PRINTER_STATUS_PENDING_DELETION = &H4
   PRINTER_STATUS_PAPER_JAM = &H8
   PRINTER_STATUS_PAPER_OUT = &H10
   PRINTER_STATUS_MANUAL_FEED = &H20
   PRINTER_STATUS_PAPER_PROBLEM = &H40
   PRINTER_STATUS_OFFLINE = &H80
   PRINTER_STATUS_IO_ACTIVE = &H100
   PRINTER_STATUS_BUSY = &H200
   PRINTER_STATUS_PRINTING = &H400
   PRINTER_STATUS_OUTPUT_BIN_FULL = &H800
   PRINTER_STATUS_NOT_AVAILABLE = &H1000
   PRINTER_STATUS_WAITING = &H2000
   PRINTER_STATUS_PROCESSING = &H4000
   PRINTER_STATUS_INITIALIZING = &H8000
   PRINTER_STATUS_WARMING_UP = &H10000
   PRINTER_STATUS_TONER_LOW = &H20000
   PRINTER_STATUS_NO_TONER = &H40000
   PRINTER_STATUS_PAGE_PUNT = &H80000
   PRINTER_STATUS_USER_INTERVENTION = &H100000
   PRINTER_STATUS_OUT_OF_MEMORY = &H200000
   PRINTER_STATUS_DOOR_OPEN = &H400000
   PRINTER_STATUS_SERVER_UNKNOWN = &H800000
   PRINTER_STATUS_POWER_SAVE = &H1000000
End Enum

Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long
Private Declare Function GetPrinter Lib "winspool.drv" Alias "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, buffer As Long, ByVal pbSize As Long, pbSizeNeeded As Long) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter 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 IsBadStringPtrByLong Lib "kernel32" Alias "IsBadStringPtrA" (ByVal lpsz As Long, ByVal ucchMax As Long) As Long

Public Function StringFromPointer(lpString As Long, lMaxLength As Long) As String
    Dim sRet As String
    Dim lret As Long
    If lpString = 0 Then
        StringFromPointer = ""
        Exit Function
    End If
    If IsBadStringPtrByLong(lpString, lMaxLength) Then
        ' An error has occured - do not attempt to use this pointer
        StringFromPointer = ""
        Exit Function
    End If
    ' Pre-initialise the return string...
    sRet = Space$(lMaxLength)
    CopyMemory ByVal sRet, ByVal lpString, ByVal Len(sRet)
    If Err.LastDllError = 0 Then
        If InStr(sRet, Chr$(0)) > 0 Then
            sRet = Left$(sRet, InStr(sRet, Chr$(0)) - 1)
        End If
    End If
    StringFromPointer = sRet
End Function

Private Sub Form_Load()
    Dim SizeNeeded As Long, buffer() As Long
    Dim pDef As PRINTER_DEFAULTS
    'Get a handle to the printer
    lret = OpenPrinter(Printer.DeviceName, mhPrinter, pDef)
    'Initialize the buffer
    ReDim Preserve buffer(0 To 0) As Long
    'Retrieve the required size (in bytes)
    lret = GetPrinter(mhPrinter, 2, buffer(0), UBound(buffer), SizeNeeded)
    'Resize the buffer... Note that a Long is four bytes
    ReDim Preserve buffer(0 To (SizeNeeded / 4) + 3) As Long
    'Retrieve the Printer information
    lret = GetPrinter(mhPrinter, 2, buffer(0), UBound(buffer) * 4, SizeNeeded)
    'The data stored in 'buffer' corresponds with the data of a PRINTER_INFO_2 structure
    ClosePrinter mhPrinter
    'Show the data
    PrintData "Server name", StringFromPointer(buffer(0), 255)
    PrintData "Printer name", StringFromPointer(buffer(1), 255)
    PrintData "Share name", StringFromPointer(buffer(2), 255)
    PrintData "Port name", StringFromPointer(buffer(3), 255)
    PrintData "Driver name", StringFromPointer(buffer(4), 255)
    PrintData "Comment", StringFromPointer(buffer(5), 255)
    PrintData "Location", StringFromPointer(buffer(6), 255)
    'Unload Me
End Sub

Sub PrintData(Name As String, Data As String)
    If LenB(Data) > 0 Then
        Debug.Print Name + ": " + Data
    End If
End Sub
Questo codice controllo lo stato della stampante con un foglio in stampa, perchè l'ho provato alla svelta ma nn dava in unscita nulla...oppure sono troppo rincoglionito e devo andare a nanna e pensarci dopo il riposo!!

Ciaooooooooooooooooooooooooo
matpez è offline   Rispondi citando il messaggio o parte di esso
Old 15-07-2003, 19:27   #6
uMoR
Registered User
 
Iscritto dal: Aug 2002
Messaggi: 274
uhm... io non sono riuscito a farci nulla tranne che avere il nome della stampante
uMoR è offline   Rispondi citando il messaggio o parte di esso
Old 15-07-2003, 19:35   #7
uMoR
Registered User
 
Iscritto dal: Aug 2002
Messaggi: 274
altre idee ?
uMoR è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Meno di 5 euro per il 5G: l'offerta Kena...
World of Warcraft: Forever è il Classic+...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Speciale TV in offerta su Amazon: Hisens...
Non c'è pace per Trezor: 347.000 e-mail ...
È un portatile Dell e li vale tut...
Apple iPhone 17 Pro Max 256GB a 1.195€ (...
GPT-6 Astra è davvero AGI o non s...
LG OLED G6S 48'' a 845€ e G6 55'' a 1368...
Mantax Otax: il malware Android che crip...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:40.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v