c# - Zapisywanie zasobów do pliku *.exe

0

Witam!
Za pomocą UpdateResource(WINAPI) zapisałem zmienną typu byte[] do innego pliku *.exe[też programu napisanego w c#]. Jak należy z perspektywy drugiego programu odczytać zasoby? Program w C# nie "widzi" zasobów zapisanych za pomocą UpdateResource.

0

Skoro zapisujesz funkcją WinAPI to odczytuj przy pomocy WinAPI.

0
Azarien napisał(a):

Skoro zapisujesz funkcją WinAPI to odczytuj przy pomocy WinAPI.

Nie działa mi:

class resources
    {
        [DllImport("kernel32.dll", SetLastError = true)]
        public static extern unsafe uint* FindResource(uint *hModule, uint lpName, uint lpType);
        [DllImport("kernel32.dll", SetLastError = true)]
        public static extern unsafe uint* LoadResource(uint *hModule, uint *hResInfo);

        public void read()
        {
            unsafe
            {
                uint* h1;
                h1 = FindResource(null, 1, 0x10);
                if (h1 != 0)
                {
                    uint *p1 = LoadResource(null, h1);

                   Console.WriteLine(Convert.ToString(*p1));
                }
            } 
0

skoro ustawiasz SetLastError=true, to sprawdź co zwraca Marshal.GetLastWin32Error() po wywołaniu każdej funkcji..

0

Działa. Dzięki.
Mam jeszcze jeden problem:
jest string s = "jakiś tekst..."; potrzebuje s.lenght przekonwertować do uint za pomocą Convert.ToUint32(s.length). Gdy za pomoca WriteLine wyświetle to co dał Convert.ToUint32(s.length) to jest to inna wartość niż s.lenght(s.lengt miało 300 a po przekonwertowaniu do uint tylko 96). Jak zrobić żeby Convert dawało prawdziwą wartość?

0

to zapytanie powinno już znaleźć się w nowym wątku... dlatego iż nowy temat nie będzie widoczny prawdopodobnie nie uzyskasz nań odpowiedzi... dla zasady to zapytanie pozostanie bez echa...

1 użytkowników online, w tym zalogowanych: 0, gości: 1