Sam dość długo poszukiwałem rozwiązania tego problemu. A problem jest ciekawy gdyż windowsy z linii NT (tj. XP/200x/NT) posiadają w pliku kernel32.dll odpowiednie funkcje API które wykonują czarną robotę. Natomiast windowsy z linii 9x (95/98/ME) posiadają uboższą wersję pliku kernel32.dll bez owych funkcji API. Na stronie microsoftu znalazłem bibliotekę unicows.dll która zawiera owe funkcje API, ale nie działa ona pod windowsami z lini NT. Dlatego należy stworzyć dla identyczne programy różniące się jedynie deklaracjami funkcji API dla dwóch różnych rodzajów systemów operacyjnych windows. W załączonym programie skorzystałem z kompilacji warunkowej (zmieniając jedną stałą jest tworzony plik dla odpowiedniej wersji systemu operacyjnego). Oczywiście należałoby w owym programie dać jakiś mechanizm kontroli który sprawdzałby czy pod windowsem XP nie został odpalony program w wersji dla Windowsa 9x, ale nie chciałem zaciemniać kodu.
Pobierz przykładowy program napisany w Microsoft Visual Basic 6.0 (120 KB)
W archiwum są dwa programy. Pierwszy (EdytowanyPlik.exe) ma za zadanie wyświetlić zasób o numerze 101 który jest w tym pliku (w programie Resource Hacker znajdziesz ten zasób w gałęzi CUSTOM). Drugi program (EdytorZasobow.exe) prosi użytkownika i wpisanie jakiegoś tekstu i ten tekst wkompilowuje w plik EdytowanyPlik.exe.