using System; using System.Runtime.InteropServices; using HWND = system.intPtr; using HANDLE = system.intPtr; namespace Win32 { public struct DRAGINFO { public int uSize; public POINT pt; public int fNC; public string lpFileList; public int grfKeyState; } public struct APPBARDATA { public int cbSize; public HWND hwnd; public int uCallbackMessage; public int uEdge; public RECT rc; public int lParam; } public struct SHFILEOPSTRUCT { public HWND hwnd; public int wFunc; public string pFrom; public string pTo; public short fFlags; public int fAnyOperationsAborted; public HANDLE hNameMappings; public string lpszProgresstitle; } public struct SHNAMEMAPPING { public string pszOldpath; public string pszNewPath; public int cchOldpath; public int cchNewPath; } public struct SHELLEXECUTEINFO { public int cbSize; public int fMask; public HWND hwnd; public string lpVerb; public string lpFile; public string lpParameters; public string lpDirectory; public int nShow; public HANDLE hInstApp; public int lpIDList; public string lpClass; public HANDLE hkeyClass; public int dwHotKey; public HANDLE hIcon; public HANDLE hProcess; } public struct NOTIFYICONDATA { public int cbSize; public HWND hwnd; public int uID; public int uFlags; public int uCallbackMessage; public HANDLE hIcon; [MarshalAs(UnmanagedType.ByValTStr,SizeConst = 64)] public string szTip; } public struct SHFILEINFO { public HANDLE hIcon; public int iIcon; public int dwAttributes; [MarshalAs(UnmanagedType.ByValArray,SizeConst = Kernel.MAX_PATH)] public string szdisplayName; [MarshalAs(UnmanagedType.ByValTStr,SizeConst = 80)] public string szTypeName; } public abstract class Shell { [DllImport("shell32")] public static extern int CommandLinetoArgv(string lpCmdLine,short pNumArgs); [DllImport("shell32")] public static extern int DoEnvironmentSubst(string szString,int cbString); [DllImport("shell32")] public static extern int DragQueryFile(HANDLE hDROP,int UINT,string lpStr,int ch); [DllImport("shell32")] public static extern int DragQueryPoint(HANDLE hDROP,ref POINT lpPoint); [DllImport("shell32")] public static extern int DuplicateIcon(HANDLE hInst,HANDLE hIcon); [DllImport("shell32")] public static extern int ExtractAssociatedIcon(HANDLE hInst,string lpIconPath,ref int lpiIcon); [DllImport("shell32")] public static extern int ExtractIcon(HANDLE hInst,string lpszExeFileName,int nIconIndex); [DllImport("shell32")] public static extern int ExtractIconEx(string lpszFile,int nIconIndex,ref int phiconLarge,ref int phiconSmall,int nIcons); [DllImport("shell32")] public static extern int FindExecutable(string lpFile,string lpDirectory,string lpResult); [DllImport("shell32")] public static extern int SHAppBarMessage(int dwMessage,ref APPBARDATA pData); [DllImport("shell32")] public static extern int SHFileOperation(ref SHFILEOPSTRUCT lpFileOp); [DllImport("shell32")] public static extern int SHGetFileInfo(string pszPath,int dwFileAttributes,ref SHFILEINFO psfi,int cbFileInfo,int uFlags); [DllImport("shell32")] public static extern int SHGetNewLinkInfo(string pszLinkto,string pszDir,string pszName,ref int pfMustcopy,int uFlags); [DllImport("shell32")] public static extern int ShellAbout(HWND hwnd,string szApp,string szOtherStuff,HANDLE hIcon); [DllImport("shell32")] public static extern int ShellExecute(HWND hwnd,string lpOperation,string lpFile,string lpParameters,int nShowCmd); [DllImport("shell32")] public static extern int Shell_NotifyIcon(int dwMessage,ref NOTIFYICONDATA lpData); [DllImport("shell32")] public static extern void DragAcceptFiles(HWND hwnd,int fAccept); [DllImport("shell32")] public static extern void DragFinish(HANDLE hDrop); [DllImport("shell32")] public static extern void SHFreeNameMappings(HANDLE hNameMappings); [DllImport("shell32")] public static extern void WinExecError(HWND hwnd,int error,string lpstrFileName,string lpstrTitle); [DllImport("shell32")] public static extern int SHbrowseForFolder(broWSEINFO lpbi); [DllImport("shell32")] public static extern int SHGetPathFromIDList(int pidList,string lpBuffer); public const int ABE_BottOM = 3; public const int ABE_LEFT = 0; public const int ABE_RIGHT = 2; public const int ABE_TOP = 1; public const int ABM_ACTIVATE = 0x6; public const int ABM_GETAUTOHIDEBAR = 0x7; public const int ABM_GETSTATE = 0x4; public const int ABM_GETTASKBARPOS = 0x5; public const int ABM_NEW = 0x0; public const int ABM_QUERYPOS = 0x2; public const int ABM_REMOVE = 0x1; public const int ABM_SETAUTOHIDEBAR = 0x8; public const int ABM_SETPOS = 0x3; public const int ABM_WINDOWPOSCHANGED = 0x9; public const int ABN_FULLSCREENAPP = 0x2; public const int ABN_POSCHANGED = 0x1; public const int ABN_STATECHANGE = 0x0; public const int ABN_WINDOWARRANGE = 0x3; public const int ABS_ALWAYSONTOP = 0x2; public const int ABS_AUTOHIDE = 0x1; public const int EIRESID = -1; public const int FOF_ALLOWUNDO = 0x40; public const int FOF_CONFIRMMOUSE = 0x2; public const int FOF_FILESONLY = 0x80; public const int FOF_MULTIDESTFILES = 0x1; public const int FOF_NOCONFIRMATION = 0x10; public const int FOF_NOCONFIRMMKDIR = 0x200; public const int FOF_RENAMEONCOLLISION = 0x8; public const int FOF_SILENT = 0x4; public const int FOF_SIMPLEPROGRESS = 0x100; public const int FOF_WANTMAPPINGHANDLE = 0x20; public const int FO_copY = 0x2; public const int FO_DELETE = 0x3; public const int FO_MOVE = 0x1; public const int FO_RENAME = 0x4; public const int NIF_ICON = 0x2; public const int NIF_MESSAGE = 0x1; public const int NIF_TIP = 0x4; public const int NIM_ADD = 0x0; public const int NIM_DELETE = 0x2; public const int NIM_MODIFY = 0x1; public const int PO_DELETE = 0x13; public const int PO_PORTCHANGE = 0x20; public const int PO_RENAME = 0x14; public const int PO_REN_PORT = 0x34; public const int SEE_MASK_CLASSKEY = 0x3; public const int SEE_MASK_CLASSNAME = 0x1; public const int SEE_MASK_CONNECTNETDRV = 0x80; public const int SEE_MASK_DOENVSUBST = 0x200; public const int SEE_MASK_FLAG_DDEWAIT = 0x100; public const int SEE_MASK_FLAG_NO_UI = 0x400; public const int SEE_MASK_HOTKEY = 0x20; public const int SEE_MASK_ICON = 0x10; public const int SEE_MASK_IDLIST = 0x4; public const int SEE_MASK_INVOKEIDLIST = 0xC; public const int SEE_MASK_NOCLOSEPROCESS = 0x40; public const int SE_ERR_ACCESSDENIED = 5; public const int SE_ERR_ASSOCINCOMPLETE = 27; public const int SE_ERR_DDEBUSY = 30; public const int SE_ERR_DDEFAIL = 29; public const int SE_ERR_DDETIMEOUT = 28; public const int SE_ERR_DLLNOTFOUND = 32; public const int SE_ERR_FNF = 2; public const int SE_ERR_NOASSOC = 31; public const int SE_ERR_OOM = 8; public const int SE_ERR_PNF = 3; public const int SE_ERR_SHARE = 26; public const int SHGFI_ATTRIBUTES = 0x800; public const int SHGFI_disPLAYNAME = 0x200; public const int SHGFI_EXETYPE = 0x2000; public const int SHGFI_ICON = 0x100; public const int SHGFI_ICONLOCATION = 0x1000; public const int SHGFI_LARGEICON = 0x0; public const int SHGFI_LINKOVERLAY = 0x8000; public const int SHGFI_OPENICON = 0x2; public const int SHGFI_PIDL = 0x8; public const int SHGFI_SELECTED = 0x10000; public const int SHGFI_SHELLICONSIZE = 0x4; public const int SHGFI_SMALLICON = 0x1; public const int SHGFI_SYSICONINDEX = 0x4000; public const int SHGFI_TYPENAME = 0x400; public const int SHGFI_USEFILEATTRIBUTES = 0x10; public const int SHGNLI_PIDL = 0x1; public const int SHGNLI_PREFIXNAME = 0x2; } }