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, 3174 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...