vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
CopyMemory (RTLMoveMemory) von vb6 nach vb.net aktualisieren 
Autor: Move
Datum: 16.10.16 15:32

Hallo,

ich möchte gerne folgenden VB6 Code nach VB.NET (Visual Basic 2008) aktualisieren:

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef _
  hpvDest As Any, ByRef hpvSource As Any, ByVal cbCopy As Integer)
Mal abgesehen davon, dass VB.NET den Datentyp Any nicht auflösen kann, stehe ich vor dem Problem, dass ich eine DruckerAPI in VB6 habe, die nun leider ein sehr zentraler Bestandteil unseres doch recht umfangreichen (und auch älteren) VB6 Projekts ist.

Public Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Integer, _
  ByVal dwBytes As Integer) As Integer
 
Public Function GetPrinter(ByRef frmOwner As System.Windows.Forms.Form, _
  Optional ByRef PrintFlags As Short = 0) As Printer
 
Dim PrintDlg As New PRINTDLG_TYPE
Dim DevMode As New DEVMODE_TYPE
Dim DevName As New DEVNAMES_TYPE
 
Dim lpDevMode, lpDevName As Integer
 
...
 
 DevMode.dmDeviceName = Printer.DeviceName
 DevMode.dmSize = Len(DevMode)
 DevMode.dmFields = DM_ORIENTATION Or DM_DUPLEX
 DevMode.dmOrientation = Printer.Orientation
 
PrintDlg.hDevMode = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, Len(DevMode))
lpDevMode = GlobalLock(PrintDlg.hDevMode)
 
If lpDevMode > 0 Then
 
   CopyMemory(lpDevMode, DevMode, Len(DevMode))
   bReturn = GlobalUnlock(PrintDlg.hDevMode)	
 
End If
 
 
...
Ich habe diesen Fremdcode aus dieser Api allerdings auch nicht so ganz verstanden, um ehrlich zu sein. CopyMemory scheint da wohl Pointer auf Speicheradressen zu "verschieben".

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef _
  hpvDest As Object, ByRef hpvSource As Object, ByVal cbCopy As Integer)
funktioniert auch leider nicht-VB stürzt dann wohl ab.

Problem ist, dass ich da keine Structures übergeben kann.

Auch wenn man CopyMemory überlädt in etwa wie z.B.

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef _
  hpvDest As Object, ByRef hpvSource As _beliebigeStruktur, ByVal cbCopy As _
  Integer)
oder umgekehrt

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef _
  hpvDest As _beliebigeStruktur, ByRef hpvSource As Object, ByVal cbCopy As _
  Integer)
hängt sich der Compiler auf.

Hat da jemand eine Idee vielleicht, wie man da sonst die ComDlg32 unter .NET nutzen bzw. CopyMemory zum Laufen bringen kann ?

Viele Grüße und herzlichen Dank im Voraus,
Stephan
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
CopyMemory (RTLMoveMemory) von vb6 nach vb.net aktualisieren3.432Move16.10.16 15:32
Re: CopyMemory (RTLMoveMemory) von vb6 nach vb.net aktualisi...1.723Manfred X17.10.16 15:26
Re: CopyMemory (RTLMoveMemory) von vb6 nach vb.net aktualisi...1.759Move17.10.16 16:58
Re: CopyMemory (RTLMoveMemory) von vb6 nach vb.net aktualisi...1.754Manfred X17.10.16 19:51
Re: CopyMemory (RTLMoveMemory) von vb6 nach vb.net aktualisi...1.815Move18.10.16 11:08
CopyMemory geht auch unter .Net1.782VB3-Guru02.11.16 13:05

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel