Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2009, 18:59   #1
Zerone
++
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 92
Восклицание Как передать параметры функции в ДЛЛ?????

Здравствуйте!

Есть код
Код:
function ShowMyDialog (Msg:string): Boolean;
begin

  Form1 := TForm1.Create(Application);

  Form1.Edit1.Text := msg;
   
  Result := (Form1.ShowModal = 1);

  Form1.Free;
end;
Код:
exports

  ShowMyDialog;
Как с помощью rundll32 передать параметр функции ShowMyDialog !?

rundll32 dllname ShowMyDialog Hello!
дает ошибку
ITIL/ITSM
Zerone вне форума Ответить с цитированием
Старый 31.05.2009, 20:24   #2
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Прототип функции должен быть
Код:
function ShowMyDialog(hWnd: Integer; hInstance: Integer;
lpCmdLine: PAnsiChar; Dummy: Longint): Integer; StdCall; export;
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Старый 01.06.2009, 09:20   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Имейте ввиду, что передача строк в ДЛЛ не так проста как кажется на первый взгляд, особенно если перед Вами AnsiString. Все дело в том, что в длинных строках часто используется указатель на строку, а не сама последовательность символов (например при копировании). И если Ваша ДЛЛ получит адрес строки (в не явном виде), со строкой она работать все равно не сможет. Кстати, при создании стандартного проекта ДЛЛ об этом написано (у меня серым по черному ).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 01.06.2009, 09:27   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как с помощью rundll32 передать параметр функции ShowMyDialog !?
А чего не вызывать стандартным способом?
впрочем:
Код:
WinExec('rundll32 dllname ShowMyDialog Hello!',0);
Цитата:
Прототип функции должен быть
Че это? Этож авторская функция...
Цитата:
что передача строк в ДЛЛ не так проста как кажется на первый взгляд
Так Rundll32 для BAT файлов то
т.е. нестандартный вызов, так что ему строка ка строка.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать значение переменной из функции в ACCESSе в функцию в EXCELе? musicitsme Microsoft Office Access 1 01.04.2009 10:24
С# - параметры функции ameli Общие вопросы .NET 4 02.06.2008 16:40
KEY_EVENT_RECORD какие передать параметры? ERASERROR Общие вопросы Delphi 1 21.02.2008 21:55
Как создать собственную ДЛЛ на Дельфи SkyM@n Помощь студентам 5 02.12.2007 07:27
Как програмно передать параметры на сервер Sniper Работа с сетью в Delphi 2 11.09.2007 10:05