Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

API-Funktion SetWindowRgn unter .NET nutzen

Frage Entwicklung Visual Studio

Mitglied: MarcoBorn

MarcoBorn (Level 1) - Jetzt verbinden

30.08.2012, aktualisiert 05.09.2012, 3203 Aufrufe, 6 Kommentare

Hallo Forum,
in VBA habe ich die API-Funktion SetWindowRgn in einem Makro aufgerufen. Ich bin gerade dabei, für ein anderes Projekt Teile des Makros nach VB.NET zu portieren. Scheinbar wird die API-Funktion nicht aufgerufen, obwohl sie korrekt deklariert wurde. Gibt es in .NET eventuell eine .NET-Funktion, die die API kapselt? Oder muss ich weitere Befehle einsetzen, um auf die API zugreifen zu knnen?

Vielen Dank im voraus,
M. Born
Mitglied: MonoTone
04.09.2012 um 09:15 Uhr
.. obwohl sie korrekt deklariert wurde.

Wie hast du sie denn deklariert?
Bitte warten ..
Mitglied: MarcoBorn
04.09.2012 um 15:13 Uhr
Deklaration:
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long

Ich habe sowohl die Deklaration als auch Teile des restlichen Codes aus Posts im Herber-Excel-Forum. Die Deklaration stimmt auch mit den Angaben aus dem API-Guide überein. In VBA hat sie problemlos funktioniert. Bin für jeden Hinweis dankbar....
Bitte warten ..
Mitglied: MonoTone
04.09.2012, aktualisiert um 15:39 Uhr
Ich frage, weil sich die API Calls von VB6 zu .NET zum Teil unterscheiden.
Hintergrund ist der, dass sich die Datentypen leicht geändert haben.
VB6 Long -> VB.NET Integer.
VB6 Integer -> VB.NET Short.

Ich kann dir diese Seite ans Herz legen:
http://www.pinvoke.net/

für deine Frage: http://www.pinvoke.net/default.aspx/user32/SetWindowRgn.html
Dort steht auch die VB.NET schreibweise.
Die alte VB6/VBA schreibweise ist natürlich auch noch möglich.
Diese ist aber schöner ^^:

<DllImport("user32.dll")> _
Public Function SetWindowRgn(ByVal hWnd As Long, ByVal hRgn As IntPtr, ByVal bRedraw As Boolean) As Long
End Function

Zu finden mit einigen Infos auf der oben geposteten Webseite.
Bitte warten ..
Mitglied: MarcoBorn
04.09.2012 um 16:25 Uhr
Vielen Dank für die schnelle Antwort. Leider bekomme ich jetzt beim Compilieren folgende Fehlermeldung:
"System.Runtime.InteropServices.DllImportAttribute kann nicht auf eine Instanzenmethode angewendet werden."

Ich hatte direkt den Code von Pinvoke kopiert und die alte Declare-Anweisung auskommentiert.
Bitte warten ..
Mitglied: MonoTone
05.09.2012 um 10:18 Uhr
Es fehlt noch ein Shared.
Also Public(oder Private) Shared Function..
Bitte warten ..
Mitglied: MarcoBorn
05.09.2012 um 12:50 Uhr
Vielen Dank, jetzt kann erhalte ich hier beim Compilieren keine Fehler mehr.
Bitte warten ..
Ähnliche Inhalte
Exchange Server
Xxx.local vs xxx.net (7)

Frage von Oberhausener zum Thema Exchange Server ...

Visual Studio
Vb.net Datenfelder aus Word 2003 Dokument auslesen (3)

Frage von Herbrich19 zum Thema Visual Studio ...

Batch & Shell
gelöst Powershell net 3.5 Installation silent (2)

Frage von Marabunta zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (44)

Frage von sabines zum Thema Internet ...

Netzwerke
Wie erstelle ich ein Intranet (19)

Frage von Leonardnet zum Thema Netzwerke ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

Frage von iAmbricksta zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2012 R2 - Zugriff Verweigert bei jeglicher Tätigkeit (13)

Frage von DarkLevi zum Thema Windows Server ...