18/10/12 8:05
Thejuster
Allora ecco cosa ho fatto
Ho un errore proprio durante la dichiarazione dell'api CreateDesktop
public static extern IntPtr CreateDesktop
Errore 1 Accessibilità incoerente: il tipo parametro 'Multiple_Desktop.Form1.ACCESS_MASK' è meno accessibile del metodo 'Multiple_Desktop.Form1.CreateDesktop(string, string, string, int, Multiple_Desktop.Form1.ACCESS_MASK, Multiple_Desktop.Form1.SECURITY_ATTRIBUTES)' c:\users\melina\documents\visual studio 2010\Projects\Multiple Desktop\Multiple Desktop\Form1.cs 37 37 Multiple Desktop
Mannaggia l'albo dei ciaffi..
Qualche soluzione?
[StructLayout(LayoutKind.Sequential)] public struct SECURITY_ATTRIBUTES { public int nLength; public IntPtr lpSecurityDescriptor; public int bInheritHandle; } [DllImport("kernel32.dll")] static extern bool CreateDirectory(string lpPathName, SECURITY_ATTRIBUTES lpSecurityAttributes); [DllImport("user32.dll", EntryPoint = "CreateDesktop", CharSet = CharSet.Unicode, SetLastError = true)] public static extern IntPtr CreateDesktop( [MarshalAs(UnmanagedType.LPWStr)] string desktopName, [MarshalAs(UnmanagedType.LPWStr)] string device, [MarshalAs(UnmanagedType.LPWStr)] string deviceMode, [MarshalAs(UnmanagedType.U4)] int flags, [MarshalAs(UnmanagedType.U4)] ACCESS_MASK accessMask, [MarshalAs(UnmanagedType.LPStruct)] SECURITY_ATTRIBUTES attributes); [DllImport("user32.dll", EntryPoint = "CloseDesktop", CharSet = CharSet.Unicode, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool CloseDesktop(IntPtr handle); [Flags] enum ACCESS_MASK : uint { DELETE = 0x00010000, READ_CONTROL = 0x00020000, WRITE_DAC = 0x00040000, WRITE_OWNER = 0x00080000, SYNCHRONIZE = 0x00100000, STANDARD_RIGHTS_REQUIRED = 0x000f0000, STANDARD_RIGHTS_READ = 0x00020000, STANDARD_RIGHTS_WRITE = 0x00020000, STANDARD_RIGHTS_EXECUTE = 0x00020000, STANDARD_RIGHTS_ALL = 0x001f0000, SPECIFIC_RIGHTS_ALL = 0x0000ffff, ACCESS_SYSTEM_SECURITY = 0x01000000, MAXIMUM_ALLOWED = 0x02000000, GENERIC_READ = 0x80000000, GENERIC_WRITE = 0x40000000, GENERIC_EXECUTE = 0x20000000, GENERIC_ALL = 0x10000000, DESKTOP_READOBJECTS = 0x00000001, DESKTOP_CREATEWINDOW = 0x00000002, DESKTOP_CREATEMENU = 0x00000004, DESKTOP_HOOKCONTROL = 0x00000008, DESKTOP_JOURNALRECORD = 0x00000010, DESKTOP_JOURNALPLAYBACK = 0x00000020, DESKTOP_ENUMERATE = 0x00000040, DESKTOP_WRITEOBJECTS = 0x00000080, DESKTOP_SWITCHDESKTOP = 0x00000100, WINSTA_ENUMDESKTOPS = 0x00000001, WINSTA_READATTRIBUTES = 0x00000002, WINSTA_ACCESSCLIPBOARD = 0x00000004, WINSTA_CREATEDESKTOP = 0x00000008, WINSTA_WRITEATTRIBUTES = 0x00000010, WINSTA_ACCESSGLOBALATOMS = 0x00000020, WINSTA_EXITWINDOWS = 0x00000040, WINSTA_ENUMERATE = 0x00000100, WINSTA_READSCREEN = 0x00000200, WINSTA_ALL_ACCESS = 0x0000037f } private void Form1_Load(object sender, EventArgs e) { SECURITY_ATTRIBUTES lpSecurityAttributes = new SECURITY_ATTRIBUTES(); DirectorySecurity security = new DirectorySecurity(); lpSecurityAttributes.nLength = Marshal.SizeOf(lpSecurityAttributes); byte[] src = security.GetSecurityDescriptorBinaryForm(); IntPtr dest = Marshal.AllocHGlobal(src.Length); Marshal.Copy(src, 0, dest, src.Length); lpSecurityAttributes.lpSecurityDescriptor = dest; string path = @"C:\Test"; CreateDirectory(path, lpSecurityAttributes); } private void button1_Click(object sender, EventArgs e) { IntPtr ins = CreateDesktop("prova", null, null, 0, ACCESS_MASK.GENERIC_ALL, null); }
Ho un errore proprio durante la dichiarazione dell'api CreateDesktop
public static extern IntPtr CreateDesktop
Errore 1 Accessibilità incoerente: il tipo parametro 'Multiple_Desktop.Form1.ACCESS_MASK' è meno accessibile del metodo 'Multiple_Desktop.Form1.CreateDesktop(string, string, string, int, Multiple_Desktop.Form1.ACCESS_MASK, Multiple_Desktop.Form1.SECURITY_ATTRIBUTES)' c:\users\melina\documents\visual studio 2010\Projects\Multiple Desktop\Multiple Desktop\Form1.cs 37 37 Multiple Desktop
Mannaggia l'albo dei ciaffi..
Qualche soluzione?
Ultima modifica effettuata da Thejuster 18/10/12 8:10
mire.forumfree.it/ - Mire Engine
C# UI Designer
C# UI Designer