Free .NET Windows API Library

Announcements and discussion for PInvoke

Moderators: Luke Jefferson, Robert

Free .NET Windows API Library

Postby Chris128 » Tue Aug 24, 2010 9:59 am

Hi Guys,

Not sure if this is a good place to post this or not but I figured if it helps someone out then its all good.

Basically I've written a .NET class library that provides .NET methods that wrap several Windows APIs, very similar to the ManagedAPI project on sourceforge (http://mwinapi.sourceforge.net/) but I believe most of the APIs/methods I have included in mine are not in that one (there's bound to be some common ones that are in both though).

My DLL consists of a class called ApiDefinitions that has the actual .NET Windows API declarations in, so if you ever want to use the APIs directly without having to convert them to .NET then you can. Then it also includes several classes that provide the .NET methods and objects that make use of these APIs. Here is a list of some of the .NET methods:
RefreshDevices - Causes the OS to refresh its list of connected devices, equivalent to doing \"scan for hardware changes\" in device manager
GetFreeDiskSpace - Returns the amount of space free on a remote disk, specified via UNC path
GetParentProcess - returns a Process object for the process that started the specified process (aka the parent process)
MapNetworkDrive - creates a network drive mapped to the specified UNC path
RemoveNetworkDrive - deletes an existing mapped network drive
GetUncPathFromNetworkDrive - Returns the UNC path that the specified network drive is mapped to
DoesNativeMethodExist - Determines whether or not a specified method exists in an unmanaged DLL
ShareExistingFolder - shares a folder and assigns the specified share permissions
Is64BitOperatingSystem (property) - Returns true if the OS is 64 bit, even if the process calling this property is running in 32 bit emulation mode.
GetAllIcons - Returns a List(Of Icon) for all of the icons in the specified dll, exe or ico file
GetIconAtIndex - Returns the icon at the specified index in the specified dll, exe or ico file
GetTopLevelWindows - Returns a list of all visible windows with their handle, class name, title bar text, owning process, and window icon
GetChildWindows - Returns a list of all child windows of a specified window, in the same format as GetTopLevelWindows
IsWow64Process - determines whether or not the specified process is a 32 bit process running on a 64 bit OS
ReleaseIpAddresses - releases all IPv4 addresses that were acquired via DHCP
RenewIpAddresses - renews the DHCP lease for all IPv4 addresses that were acquired via DHCP
JoinToDomain - Joins the computer to the specified domain
RemoveFromDomain - Removes the computer from the domain it is joined to (can also be run against a remote computer)
GetStringResource - gets a string from a DLL resource address (e.g @%Systemroot%\\system32\\wbem\\wmisvc.dll,-203)
ReadMemory - reads a specified amount of bytes from another process's virtual memory
GetCommandLineArgs - gets the command line arguments that were passed to any currently running process when it was started (even if it was not started by your program)
GetServices - gets a list of all services that are in the specified state (running, stopped etc) with their process IDs
GetServicesFromProcess - pass in a process and get back a list of any services that are running in that process
FlashWindow - Causes the specified window to flash to get the user's attention
SetWindowState - Make a specified window hide, minimize, maximize, etc
InstallService - Creates a Windows Service with the specified parameters on the local machine or a remote machine
DeleteService - Removes the specified Windows Service from the local machine or a remote machine
EmptyRecycleBin - Empties the recycle bin
GetRecycleBinItemcount - Returns the number of items in the recycle bin
GetRecycleBinSize - Gets the total size of the items in the recycle bin
RenameComputer - Renames the local computer and corresponding domain account
GetWindowFromTitle - Gets a NativeWindow instance for the window with the specified title (NativeWindow instance includes title, owning process, icon, handle etc)
GetWindowsFromPartialTitle - Same as GetWindowFromTitle but finds any windows with the specified string anywhere in their title
GetWindowSize - Gets the size in pixels of any window
GetActiveWindow - Gets the currently active window (aka foreground window)
MakeWindowTopMost - Makes the specified window a topmost window (i.e it stays at the foreground even when not in focus, like task manager)
MakeWindowNotTopMost - Stops a window from being a topmost window if it currently is one
SetParentWindow - Makes the specified window a child of another window
DeleteUserProfile - Removes the specified user's windows profile and settings

and here is a list of the APIs declared in my ApiDefinitions class:

GetFreeDiskSpaceEx
WNetCancelConnection
WNetAddConnection2
NetShareAdd
InitializeSecurityDescriptor
SetEntriesInAcl
SetSecurityDescriptorDacl
IsValidSecurityDescriptor
SystemParametersInfo
NetShareAdd
WNetGetConnection
GetProfileType
GetForegroundWindow
ShowWindow
RegisterHotKey
UnregisterHotKey
CM_Reenumerate_DevNode
NtQueryInformationProcess
ExtractIconEx
DestroyIcon
DoesWin32MethodExist
IsWow64Process
GetModuleHandle
GetProcAddress
EnumWindows
EnumChildWindows
GetWindowTextLength
GetWindowText
IsWindowVisible
GetWindowThreadProcessID
GetClassName
SetParent
SendMessage
GetWindowLong
GetClassLong
IpReleaseAddress
IpRenewAddress
GetInterfaceInfo
NetJoinDomain
NetUnjoinDomain
LoadLibrary
FreeLibrary
LoadString
CloseHandle
OpenProcess
ReadProcessMemory
CreateProcess
CreatePipe
PeekNamedPipe
WaitForMultipleObjects
ReadFile
WriteFile
DuplicateHandle
FlashWindowEx
OpenSCManager
EnumServicesStatusEx
CloseServiceHandle
CreateService
DeleteService
OpenService
StartService
SetWindowPos
GetWindowRect
DeleteProfile
SetComputerNameEx
NetRenameMachineInDomain
SHQueryRecycleBin
SHEmptyRecycleBin
GetProfilesDirectory
EnumPwrSchemes
SetActivePwrScheme
GetActivePwrScheme

So yeah, if anyone thinks it might be useful to them you can download it for free from my blog here: http://cjwdev.wordpress.com/2010/07/29/ ... available/

Hope it helps someone out and let me know if you have any feedback or suggestions :)

Cheers
Chris
Chris128
 
Posts: 6
Joined: Tue Aug 24, 2010 9:37 am

Return to PInvoke.Net

Who is online

Users browsing this forum: No registered users and 1 guest