Dynamiczne ładowanie biblioteki DLL o nazwie pobranej z pliku txt

0

Witam czy istnieje możliwość zrobienia programu który wczytuje plik .dll i wywołuje funkcję którą odczyta z .txt ?

Ma na myśli coś takiego:

  1. Odpala się program
  2. Wczytuje nazwe .dll z pliku .txt
  3. Odczytuje jakie funkcje ma wywołać i jakie podać jej parametry
  4. Wywołuje funkcje.

Wczytywanie dynamiczne .dll potrafię zrobić jednak nie mam pomysłu jak zrobić powyższe wczytywanie.

0

W załączniku (rundll32_test_dll.rar) masz przykład tworzenia i użycia dllki pod kątem uruchamiania jej przez rundll32.exe. Natomiast jeżei chcesz robić to po swojemu. To coż za problem. Jak już odczytałeś z pliku *.txt nazwę dllki to zrób sobie odczytywanie nazwy funkcji i ewentualnie parametrów również jako stringi. Tylko przekazuj to oczywiście jako PChar żeby uniknąc problemów.

Bo przecież do procedury czy funkcji z dllki ładowanej dynamicznie poprzez GetProcAddress. Podstawiasz jako drugi parametr string, także nie widzę problemu. Natomiast jeżeli nie chce się Tobie męczyć z obsługą plików txt i ich parsowaniem, to polecam użyc plików typu ini. Są proste w obsłudze i nadadzą się do tego celu według mnie wyśmienicie.

EDIT: A już wiem z czym można mieć problem. Z róznymi typami. No to trzeba pokombinować z własnym typem rekordowym raczej i tak jak opisano na: http://stackoverflow.com/questions/9697731/passing-array-of-record-to-delphi-dll - powinno się powieść. Lub coś na wzór tego co załączyłem w array_of_const_dll.rar. Jeżeli jednak nie o to chodzi, to może ktoś jeszcze coś Tobie doradzi. Ponieważ piszesz nie do działu Newbie, to uważam, ze jakąś wiedzę posiadać musisz. I nie ma co wymyślać koła na nowo. I uczyć takich banałów jak załadowanie pliku tekstowego badź pliku typu INI. Lub sparsowanie pliku tekstowego funkcjami do operacji na łańcuchach tekstowych.

0

Może zamiast w Delphi spróbuj to w AutoIT zrobić - https://www.autoitscript.com/autoit3/docs/functions/DllCall.htm

Olesio ma racje, będziesz miał spory kłopot z typami, strukturami, wskaźnikami i w praktyce będziesz i tak musiał obudować to jakimś systemem przetwarzania tych danych = własny język programowania jak na moje oko.

Opisz może więcej do jakich celów chcesz to wykorzystać, a być może okaże się, że zupełnie inaczej można to osiągnąć.

0

Dokładnie, a jeżeli nie AutoIT, to jest jeszcze AutoHotKey. Oczywiście oba posiadają bogatą dokumentacje i swoje fora supportu, co powinno ułatwić tworzenie w nich na przykład prostej aplikacji.

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