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.
Skoro zapisujesz funkcją WinAPI to odczytuj przy pomocy WinAPI.
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));
}
}
skoro ustawiasz SetLastError=true, to sprawdź co zwraca Marshal.GetLastWin32Error()
po wywołaniu każdej funkcji..
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ść?
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...