Страница: 1 |
Вопрос: Господа GetProcAddress проблема помогите плиз | Добавлено: 09.01.07 13:38 |
Автор вопроса: ![]() |
Возникла проблема, не знаю как решить уже 5 дней гемороюсь что делать не знаю...
вот пример: unit WebForm1; interface uses System.Collections, System.ComponentModel,wintypes,windows, System.Runtime.InteropServices, System.Data, System.Drawing, System.Web, System.Web.SessionState, System.Web.UI, System.Web.UI.WebControls, System.Web.UI.HtmlControls; type TMtCreate = function () : integer; TWebForm1 = class(System.Web.UI.Page) {$REGION 'Designer Managed Code'} strict private procedure InitializeComponent; procedure Button1_Click(sender: System.Object; e: System.EventArgs); {$ENDREGION} strict private procedure Page_Load(sender: System.Object; e: System.EventArgs); strict protected Label1: System.Web.UI.WebControls.Label; Button1: System.Web.UI.WebControls.Button; procedure OnInit(e: EventArgs); override; private { Private Declarations } public { Public Declarations } end; var HLib: THandle; MtCreate: TMtCreate; implementation {$REGION 'Designer Managed Code'} /// <summary> /// Required method for Designer support -- do not modify /// the contents of this method with the code editor. /// </summary> procedure TWebForm1.InitializeComponent; begin Include(Self.Button1.Click, Self.Button1_Click); Include(Self.Load, Self.Page_Load); end; {$ENDREGION} procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs); begin // TODO: Put user code to initialize the page here end; procedure TWebForm1.OnInit(e: EventArgs); begin // // Required for Designer support // InitializeComponent; inherited OnInit(e); end; procedure TWebForm1.Button1_Click(sender: System.Object; e: System.EventArgs); begin [DllImport('kernel32.dll')] HLib:=LoadLibrary('C:\mtapi2.dll'); if HLib > 32 then begin @MtCreate:= IntPtr.toPointer(GetProcAddress(HLib, 'MtCreate')); Label1.Text:=convert.tostring(MtCreate); end; end; end. жас в том что у меня @MtCreate = null reference . Я понял что GetProcAddress не работает поскольку возвращает IntPtr чтоб ему пусто было а IntPtr почему-то не преобразуется в Pointer почему не знаю ? короче говоря не работает такой код кто знает почему? Пишу на Delphi . net. Всем спасибо.. |
Ответы | Всего ответов: 2 |
Номер ответа: 1 Автор ответа: ![]() ![]() Вопросов: 1 Ответов: 1 |
Профиль | Цитата | #1 | Добавлено: 09.01.07 13:41 |
ой пардон строчки [DllImport('kernel32.dll')]
нету случайно затисалась |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 249094859 Вопросов: 0 Ответов: 310 |
Профиль | Цитата | #2 | Добавлено: 10.01.07 12:49 |
Что-то мне сдается, что ты пытаешься вызвать обычный метод как статический.
@MtCreate:= IntPtr.toPointer(GetProcAddress(HLib, 'MtCreate')); Может быть должно быть так: @MtCreate:= toPointer(GetProcAddress(HLib, 'MtCreate')).ToPointer; З.Ы. Точность синтаксиса не гарантирую ибо Delphi.NET не относятся к тем языкам, что я знаю в совершенстве. |
Страница: 1 |
|