Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> функция из dll, пытаюсь вызвать 
:(
    Опции темы
_hunter
  Дата 28.10.2003, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



Работаю в Builder-e

Пишу в нем такой код:
Код
HINSTANCE Hlib = LoadLibrary("c:\\winnt\\system32\\advapi32.dll");
if(!Hlib){ return;}

FARPROC W = GetProcAddress(Hlib,"CreateProcessWithLogonW");
[COLOR=red]
BOOL rez = ((CreateProcessWithLogonW*)W)(aName,aSrv,aPassw,1,pName,pName,0,NULL,NULL,&si, &pi);[/COLOR]
//ошибка: Expression syntax



что я не так делаю?

Это сообщение отредактировал(а) _hunter - 28.10.2003, 21:52


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
valex13
Дата 29.10.2003, 05:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 29.1.2003
Где: Иркук. область, г . Иркутск

Репутация: нет
Всего: 1



Вместо FARPROC я бы сделал так:

Код

typedef bool(_stdcall *func)
(
//Описываю параметры функции
//Например
char[20] aName,
char[20] aSrv,
char[25] aPss,
char[25] pName,
int iType,
// и т.д.
);

func bCreateProcessWithLogonW;
bCreateProcessWithLogonW = (func) GetProcAddress(Hlib,"CreateProcessWithLogonW");
ASSERT(bCreateProcessWithLogonW !=NULL);
bool bRezult = bCreateProcessWithLogonW(aName,aSrv,aPassw,1,pName,pName,0,NULL,NULL,&si, &pi );



Мне кажеться так будет правильней. В твоем случае наверно :
Код

BOOL rez = (bool)W(aName,aSrv,aPassw,1,pName,pName,0,NULL,NULL,&si, &pi);


PM MAIL ICQ   Вверх
RAN
Дата 29.10.2003, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: 5
Всего: 6



valex13 прав, что CreateProcessWithLogonW - это не тип, это имя функции. Но его пример тоже не пойдёт, stdcall не покатит.
PM MAIL ICQ   Вверх
valex13
Дата 29.10.2003, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 29.1.2003
Где: Иркук. область, г . Иркутск

Репутация: нет
Всего: 1



Все зависит от DLL. Может он пишет функции с вызовом stdcall. Вызов можно и не ставить, тогда будет Си-шный по умолчанию. Это всего лишь пример.
_hunter не указал какая именно у него DLL и на чем она "спаяна".
PM MAIL ICQ   Вверх
_hunter
Дата 29.10.2003, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



В смысле не указал?:
LoadLibrary("c:\\winnt\\system32\\advapi32.dll");
Спаяна, я думаю на Visual C (или на чем там Microsoft пишет smile.gif )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
valex13
Дата 30.10.2003, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 29.1.2003
Где: Иркук. область, г . Иркутск

Репутация: нет
Всего: 1



Ну и что?
Цитата

LoadLibrary("c:\\winnt\\system32\\advapi32.dll");

Это ничего не указывает. Во всяком случае мне advapi32.dll ничего не говорит. Конечно, может быть это набор API функции, тогда конечно stdcall нельзя указывать, но ведь я тоже могу написать DLL и назвать ее так же!
PM MAIL ICQ   Вверх
_hunter
Дата 30.10.2003, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



я имел в виду что функция - стандартная и поставляется с Виндой(>2000). Что в этом случае писать?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
man2002ua
Дата 31.10.2003, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



hunter, надеюсь письмо ты получил smile.gif
для остальных - функция CreateProcessWithLogonW понимается Builder-oм и использовать ее можно по-человечески biggrin.gif


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
_hunter
Дата 31.10.2003, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



Спасибо, получил.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0617 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.