2015-11-16 5 views
0

Я хочу вызвать экспорт DLL Windows по командной строке или с помощью пакетного файла. DLL - winscard.dll, который находится по адресу \windows\system32.Нужна альтернатива RUNDLL32 для вызова DLL

Но я не хочу использовать RUNDLL или RUNDLL32, потому что функции, которые я хочу вызвать, не имеют стандартной подписи для вызова RUNDLL32.

Подпись должна быть как:

void CALLBACK EntryPoint(
    HWND hwnd, 
    HINSTANCE hinst, 
    LPSTR lpszCmdLine, 
    int nCmdShow); 

Так что я ищу другой способ вызова этих функций. Кто-нибудь делал это раньше?

ответ

0

Попробуйте это: http://pastebin.com/U8XvZsvA (в случае, если ссылка не работает: https://paste.ee/p/clnzM)

Compile с GCC.

Используйте его как это rundll winscard.dll EntryPoint [arguments in order from left to right].

Чтобы передать строковый аргумент, укажите его ., в противном случае он будет принят как числовое значение (как признано strtol).

Конечно, это, скорее всего, не сработает, если функция принимает аргументы указателя, которые вы не можете передать из командной строки. Вы можете отредактировать код в соответствии с вашими потребностями, но вполне вероятно, что то, что вы хотите сделать, невозможно будет сделать из командного файла.