Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выгрузка dll [WinXP]


Wolffgang ©   (2004-10-28 16:41:00) 

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

Сделал длл с формой, она создается но не показывается. При перезагрузке или если убить процесс через менеджер вываливается runtime error code 217, немного позже - system error code 1400, invalid window handle.
В onclose формы:

action:=cafree;
Form1:=nil;


код длл:

library mydll;

uses
 Windows,
 forms,
 unit1 in unit1.pas',
 unit2 in 'unit2.pas';

exports
 Proc1;

var
 hFileMappingObject: THandle;
 fInit: Boolean;

{----------------------------\
|                            |
|     DLL_PROCESS_DETACH     |
|                            |
\----------------------------}

procedure DLLMain(Reason: Integer);
begin

 if Reason = DLL_PROCESS_DETACH then
 begin
   UnmapViewOfFile(lpvMem);
   CloseHandle(hFileMappingObject);
 end;

end;

{----------------------------\
|                            |
|     DLL_PROCESS_ATTACH     |
|                            |
\----------------------------}

begin
 DLLProc := @DLLMain;

 hFileMappingObject := CreateFileMapping(
   THandle($FFFFFFFF),
   nil,                
   PAGE_READWRITE,    
   0,                  
   4096,              
   'MyDllShareMem'
 );

 if hFileMappingObject = INVALID_HANDLE_VALUE then
 begin
   ExitCode := 1;
   Exit;
 end;

 fInit := GetLastError() <> ERROR_ALREADY_EXISTS;

 lpvMem := MapViewOfFile(hFileMappingObject,FILE_MAP_WRITE,0,0,0);

 if lpvMem = nil then
 begin
   CloseHandle(hFileMappingObject);
   ExitCode := 1;
   Exit;
 end;

 if fInit then
   FillChar(lpvMem, PSIZE, #0);

end.


Digitman   (2004-10-29 16:11:00) [1]


> hook и yandex


и чего ты тычешь здесь эти "страшные слова" ?

Библия, Коран, Талмут и иже с ними - тоже претендуют на истины, однако каждый трактует эти "истины" по-своему, набивает кучу шишек, а потом пеняет на "первоисточник", мол, а какого хрена тогда там это написано ..


> неужели никто не заметил ошибку, если она есть?


да какие там "ошибки" ?
в приведенном тобой коде нет даже намека на создание/разрушение хоть одной формы .. предлагаешь их, ошибки, мне самому выдумать ? или как ?

и еще вопрос ...

ты случаем не для глоб.хука эту ДЛЛ сотворяешь ?
если так, то ExitCode = 1 - это мертвому припарка.


Wolffgang   (2004-10-29 16:00:00) [2]

>галиматья какая-то ...

hook и yandex

http://delphi.softclub.net/read/akdelfaq.html

и еще куча страниц с такими же исходниками

неужели никто не заметил ошибку, если она есть?

> наводит на с ташныеподозрения.

деисвитлнно :)

оставим поэзию поэтам.

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


Digitman   (2004-10-28 17:32:00) [3]

уже вот это

  ExitCode := 1;
  Exit;

наводит на сташные подозрения.


Wolffgang   (2004-10-28 17:25:00) [4]

что конкретно не понятно?


Digitman   (2004-10-28 17:23:00) [5]

все равно галиматья


Wolffgang   (2004-10-28 17:15:00) [6]

никакая это не галиматья...

это рабочий код длл-ки кейлоггера и все в нем нормально, все работает.

единственная проблема - при уничтожении процесса, как я понимаю, возникает ошибка при уничтожении формы.


Digitman   (2004-10-28 17:01:00) [7]

галиматья какая-то ...


Наверх

Титульная страница Поиск, карта сайта Написать письмо