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, 3210 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
Visual Studio
Suche Quellcode für asp net menu controll

Frage von Herbrich19 zum Thema Visual Studio ...

Exchange Server
NET Framework 4.7 and Exchange Server You Had Me At EHLO (2)

Link von Dani zum Thema Exchange Server ...

Batch & Shell
gelöst Erstellen eines GUI in Powershell und das nutzen vom Funktionen mit Usereingabe (2)

Frage von IT-Guy77 zum Thema Batch & Shell ...

Visual Studio
gelöst Vb.net raw string in xdocument einfügen (6)

Frage von Herbrich19 zum Thema Visual Studio ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Netzwerke
gelöst Standartgateway für Clients (21)

Frage von itsk-robert zum Thema Netzwerke ...

Firewall
Welche Firewall ? (18)

Frage von Cyberurmel zum Thema Firewall ...

Windows Server
gelöst Einzelnes Windows Update über GPO deinstallieren (16)

Frage von lordofremixes zum Thema Windows Server ...