Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than user32, prefix the name with the module name and a period.
<DllImport("user32.dll", SetLastError:=True)> _
Private Shared Function LoadImage(ByVal hInst As IntPtr, ByVal lpszName As String, ByVal uType As UInt32, _
ByVal cxDesired As Integer, ByVal cyDesired As Integer, ByVal fuLoad As UInt32) As IntPtr
End Function
C++/CLI Signature:
[DllImportAttribute("user32.dll", SetLastError = true, CharSet = CharSet::Auto)]
extern "C" int LoadImage(int hinst, int lpszName, unsigned int uType, int cxDesired, int cyDesired, unsigned int fuLoad);
C++/CLI: This solution allows you to load an image from an unmanaged resource in the assembly. In my case I added a .cur file to my .rc. The cursor had an ID of 101. After loading the cursor I assigned it to the Forms::Cursor.
Tips & Tricks:
To use integer resource ID instead of string, and avoid using MAKEINTRESOURCE, prepend the integer with '#'. For example, to use resource ID 32512, enter "#32512" for lpszName.
To load application icons of different sizes, use cxDesired and cyDesired (see the example).
Sample Code:
Please add some!
C++/CLI Example
using namespace System::Runtime::InteropServices;
using namespace System::Windows::Forms;
using namespace System::Reflection;
int a = LoadImage(Marshal::GetHINSTANCE(Assembly::GetExecutingAssembly()->GetModules()[0]).ToInt32(),101,2,0,0,0);
this->Cursor = gcnew ::Cursor(IntPtr(a));
/// <summary>
/// Returns an icon of given size.
/// </summary>
/// <param name="path">Path to a file (.exe/.dll) that contains the icons.
/// Skip it or use <c>null</c> to use current application's file.</param>
/// <param name="resId">Name of the resource icon that should be loaded.
/// Skip it to use the default <c>#32512</c> (value of <c>IDI_APPLICATION</c>) to use
/// the application's icon.</param>
/// <param name="size">Size of the icon to load. If there is no such size available, a larger or smaller
/// sized-icon is scaled.</param>
/// <returns>List of all icons.</returns>
public static Icon GetIconFromExe(string path = null, string resId = "#32512", int size = 32) {
// load module
IntPtr h;
if (path == null)
h = Marshal.GetHINSTANCE(Assembly.GetEntryAssembly().GetModules()[0]);
else {
h = LoadLibraryEx(path, IntPtr.Zero, LoadLibraryFlags.LOAD_LIBRARY_AS_DATAFILE);
if (h == IntPtr.Zero)
return null;
}
helpful tips or sample code to share for using this API in managed code?
corrections to the existing content?
variations of the signature you want to share?
additional languages you want to include?
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).