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); }
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; }