Ejemplo n.º 1
0
        public static ResourceLayout LoadSettings(string path)
        {
            var ret = new ResourceLayout();

            using (var ipModule = new RemoteDesktop_CSLibrary.Handle_Wrapper(LoadLibraryEx(path, IntPtr.Zero, LoadLibraryFlags.LOAD_LIBRARY_AS_DATAFILE)))
            {
                if (ipModule.Handle == IntPtr.Zero)
                {
                    throw new Exception("LoadLibraryEx error " + Marshal.GetLastWin32Error());
                }

                var ipResInfo = FindResource(ipModule.Handle, "#8", "#6");//Why 8 here? I dont know, it was the only RT_STRING type listed in the exe. 6 is RT_STRING type
                if (ipResInfo == IntPtr.Zero)
                {
                    throw new Exception("FindResource error " + Marshal.GetLastWin32Error());
                }

                var hResLoad = LoadResource(ipModule.Handle, ipResInfo);
                if (hResLoad == IntPtr.Zero)
                {
                    throw new Exception("LoadResource error " + Marshal.GetLastWin32Error());
                }
                var lpResLock = LockResource(hResLoad);
                if (lpResLock == IntPtr.Zero)
                {
                    throw new Exception("LockResource error " + Marshal.GetLastWin32Error());
                }
                var    dwsize = SizeofResource(ipModule.Handle, ipResInfo);
                byte[] y      = new byte[dwsize];

                Marshal.Copy(lpResLock, y, 0, (int)dwsize);

                var splits = Split(y);
                int offset = 0;

                ret.IDS_STRINGSERVICE_NAME              = splits[offset++];
                ret.IDS_STRINGSERVICE_DISPLAY_NAME      = splits[offset++];
                ret.IDS_STRINGDEFAULTPORT               = splits[offset++];
                ret.IDS_STRINGDEFAULTGATEWAY            = splits[offset++];
                ret.IDS_STRINGDEFAULTPROXYGETSESSIONURL = splits[offset++];

                ret.IDS_STRINGDISCLAIMERMESSAGE = splits[offset++];
                ret.IDS_STRINGUNIQUE_ID         = splits[offset++];
            }
            return(ret);
        }
Ejemplo n.º 2
0
        public static ResourceLayout LoadSettings(string path)
        {
            var ret = new ResourceLayout();
            using (var ipModule = new RemoteDesktop_CSLibrary.Handle_Wrapper(LoadLibraryEx(path, IntPtr.Zero, LoadLibraryFlags.LOAD_LIBRARY_AS_DATAFILE)))
            {
                if (ipModule.Handle == IntPtr.Zero) throw new Exception("LoadLibraryEx error " + Marshal.GetLastWin32Error());

                var ipResInfo = FindResource(ipModule.Handle, "#8", "#6");//Why 8 here? I dont know, it was the only RT_STRING type listed in the exe. 6 is RT_STRING type
                if (ipResInfo == IntPtr.Zero) throw new Exception("FindResource error " + Marshal.GetLastWin32Error());

                var hResLoad = LoadResource(ipModule.Handle, ipResInfo);
                if (hResLoad == IntPtr.Zero) throw new Exception("LoadResource error " + Marshal.GetLastWin32Error());
                var lpResLock = LockResource(hResLoad);
                if (lpResLock == IntPtr.Zero) throw new Exception("LockResource error " + Marshal.GetLastWin32Error());
                var dwsize = SizeofResource(ipModule.Handle, ipResInfo);
                byte[] y = new byte[dwsize];

                Marshal.Copy(lpResLock, y, 0, (int)dwsize);

                var splits = Split(y);
                int offset = 0;

                ret.IDS_STRINGSERVICE_NAME = splits[offset++];
                ret.IDS_STRINGSERVICE_DISPLAY_NAME = splits[offset++];
                ret.IDS_STRINGDEFAULTPORT = splits[offset++];
                ret.IDS_STRINGDEFAULTGATEWAY = splits[offset++];
                ret.IDS_STRINGDEFAULTPROXYGETSESSIONURL = splits[offset++];

                ret.IDS_STRINGDISCLAIMERMESSAGE = splits[offset++];
                ret.IDS_STRINGUNIQUE_ID = splits[offset++];
            }
            return ret;
        }