#

C# GetModuleHandle

Was macht GetModuleHandle()?
GetModuleHandle(Modulname im Memory) gibt einen Zeiger auf eine benannte Dll oder Exe zurück

Im C# Code zur Laufzeit:

IntPtr intPtr_myModulename = GetModuleHandle(curModule.ModuleName);


Werte im Debugger->Direktfenster, Laufzeit

Eingabewert

curModule.ModuleName "ScreenCapture_to_Clipboard.vshost.exe" string

Ausgabewert

intPtr_myModulename {10944512} System.IntPtr



Hier ein ScreenShot zur Laufzeit im Code:
GetModule(..) gibt den Zeiger auf die Speicheradresse 10944512 zurück, wo sich das geladene Modul „ScreenCapture_to_Clipboard.vshost.exe“ befindet



Damit man GetModuleHandle in C# WPF/UWP verwenden kann, muss man folgende Code-Zeile in die Klasse einfügen:
WPF:

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern IntPtr GetModuleHandle(string lpModuleName);


Und im Header den Namespace

using System.Runtime.InteropServices;


Quellen:
Quellen->GetModuleHandle
MSDN->GetModuleHandle function
Retrieves a module handle for the specified module. The module must have been loaded by the calling process.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms683199(v=vs.85).aspx


Quelle:
Interessanter Beitrag zu GetModuleHandle(Null)
http://blog.m-ri.de/index.php/2007/12/12/die-unsitte-immer-getmodulehandlenull-fuer-hinstance-in-createwindow-und-registerclass-zu-verwenden/
GetModuleHandle(NULL) ->Handle auf das aktuelle Fenster
->AfxGetInstanceHandle verwenden

Was ist ein IntPtr ?
MSDN->IntPtr-Struktur
Ein plattformabhängiger Typ zur Darstellung von Zeigern und Handles.
That is, an instance of this type is expected to be 32-bits on 32-bit hardware and operating systems, and 64-bits on 64-bit hardware and operating systems.
https://msdn.microsoft.com/de-de/library/system.intptr(v=vs.110).aspx
Mobile

.

123movies