Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Вниз

Точка входа в проц-у ConvertToGlobalHandle не найден в kernel32   Найти похожие ветки 

 
Shlomo ©   (2006-10-27 10:12) [0]

Здравствуйте!
Подскажите, пожалуйста, в чём тут проблема.

Программа выдаёт ошибку «"Точка входа в процедуру ConvertToGlobalHandle не найден в библиотеке DLL KERNEL32.dll"»

Программа для открытия и закрытия сетевых ресурсов. Скачал с delphikingdom.ru


unit Unit1;
interface
uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls ;
type
   TForm1 = class(TForm)
       Button1: TButton;
       Button2: TButton;
       procedure Button1Click(Sender: TObject);
       procedure Button2Click(Sender: TObject);
private
   { Private declarations }
public
   { Public declarations }
end;
//подключаем две функции из библиотеки svrapi.dll
Function NetShareAdd(Servername : PChar; Level : Integer; Buffer : Pointer;
   BufferSize : Integer) : Integer; stdcall; external "svrapi.dll";
Function NetShareDel(Servername : PChar; NetName : PChar; Reserved:DWORD): DWORD;
   stdcall; external "svrapi.dll";
//необходимые константы
const
{см. LmCons.pas}
   LM20_NNLEN = 12;
   SHPWLEN = 8;
   SHI50F_RDONLY = 1;
   SHI50F_FULL = 2;
   STYPE_DISKTREE = 0;
   SHI50F_PERSIST = $0100;
   SHI50F_SYSTEM = $0200;
{см. LmErr.pas}
   NERR_BASE = 2100;
   NERR_NetNotStarted = NERR_BASE+2;
   NERR_UnknownServer = NERR_BASE+3;
   NERR_ServerNotStarted = NERR_BASE+14;
   NERR_UnknownDevDir = NERR_BASE+16;
   NERR_RedirectedPath = NERR_BASE+17;
   NERR_DuplicateShare = NERR_BASE+18;
   NERR_BufTooSmall = NERR_BASE+23;
   NERR_NetNameNotFound = NERR_BASE+210;
   NERR_InvalidComputer = NERR_BASE+251;
   NERR_ShareNotFound = NERR_BASE+292;
//формируем тип для записи с необходимыми параметрами
Type
TShareInfo50 = Record
   shi50_netname: Array[0..LM20_NNLEN] Of Char; //сетевое имя
   shi50_type: Byte; //тип ресурса
   shi50_flags: Short; //флаг доступа
   shi50_remark: PChar; // комментарий
   shi50_path: PChar; // путь к ресурсу
   shi50_rw_password: Array[0..SHPWLEN] Of Char;//пароль полного доступа
   shi50_ro_password: Array[0..SHPWLEN] Of Char;//пароль "только чтение" доступа
End; {Record}
var
   Form1: TForm1;
implementation
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
Var
   info50: TShareInfo50;
   rc, cb: Integer;
   ServerName, Path, NetName, ErrMes, ErrCap, Comment:String;
   MessIconBtn:Byte;
begin
//установим необходимые параметры
ServerName:="";
Path:="C:\TEMP";
NetName:="TEST";
Comment:="This is a network machine""s commentary";
//заполним буфер
FillChar(info50, sizeof(info50), 0);
With info50 Do
Begin{With}
StrCopy(shi50_netname, PChar(NetName)); //сетевое имя
shi50_type := STYPE_DISKTREE; //подключать будем диск
shi50_remark:=PChar(Comment); //комментарий
shi50_flags:= SHI50F_RDONLY OR SHI50F_FULL //доступ определяется паролем
                   OR SHI50F_PERSIST;//и пишется в Registry
shi50_path:=PChar(Path); //путь
StrPCopy(shi50_rw_password,"ASDF"); //пароль для полного доступа
StrPCopy(shi50_ro_password,"QWE"); // пароль для "только чтение"
End;{With}
//установим размер буфера
cb := sizeof(info50);
//основная функция
rc := NetShareAdd(PChar(ServerName), 50, @info50, cb);
//сформируем текст сообщений об успехе или ошибках
ErrMes:="Доступ к устройству ""+NetName+"" открыт!";
ErrCap:="Все в порядке!";
MessIconBtn:=MB_OK OR MB_ICONINFORMATION;
//проверка ошибок
If rc <> 0 Then
Begin {ошибка}
ErrCap:="Ошибка!";
MessIconBtn:=MB_OK OR MB_ICONERROR;
Case rc Of
//расшифровка ошибок
   ERROR_NOT_ENOUGH_MEMORY : ErrMes:="Недостаточно памяти";
   ERROR_BAD_NETPATH : ErrMes:="""+Servername+ "" - неверное сетевое имя!";
   ERROR_NETNAME_DELETED : ErrMes:="Сетевой ресурс более недоступен";
   ERROR_NETWORK_ACCESS_DENIED: ErrMes:="Отсутствует доступ к сети";
   ERROR_BAD_DEV_TYPE : ErrMes:="Неверный тип сетевого ресурса";
   ERROR_BAD_NET_NAME : ErrMes:="Не найдено сетевое имя";
   ERROR_INVALID_PARAMETER : ErrMes:="Неверный параметр";
   ERROR_INVALID_LEVEL : ErrMes:="Неверный уровень администрирования";


   NERR_InvalidComputer:ErrMes:="Неверное имя компьютера!";
   NERR_UnknownServer:ErrMes:="Неизвестный сервер!";
   NERR_UnknownDevDir:ErrMes:="Устройство ""+Path+"" отсутствует!";
   NERR_ServerNotStarted:ErrMes:="Сервер не работает!";
   NERR_RedirectedPath:ErrMes:="Переназначенный путь!";
   NERR_DuplicateShare:ErrMes:="Сетевое имя ""+NetName+"" уже существует!";
   NERR_BufTooSmall:ErrMes:="Слишком маленький буфер для данных!";
Else
End; {Case}
End; {ошибка}
//выдадим сообщение
MessageBox(Application.Handle,PChar(ErrMes),PChar(ErrCap),MessIconBtn);
end;

procedure TForm1.Button2Click(Sender: TObject);
Var
rc:DWord;
Servername,NetName, ErrMes, ErrCap:String;
MessIconBtn:Byte;
begin
ServerName:="";
NetName:="TEST";
rc:=NetShareDel(PChar(ServerName),PChar(NetName),0);
ErrMes:="Доступ к устройству ""+NetName+"" закрыт!";
ErrCap:="Все в порядке!";
MessIconBtn:=MB_OK OR MB_ICONINFORMATION;

If rc <> 0 Then
Begin {ошибка}
//ошибка
ErrCap:="Ошибка!";
MessIconBtn:=MB_OK OR MB_ICONERROR;

Case rc Of
//расшифровка ошибок
   ERROR_BAD_NETPATH:ErrMes:="""+Servername+ "" - неверное сетевое имя!";
   ERROR_INVALID_PARAMETER:ErrMes:="Неверный параметр!";
   NERR_NetNotStarted:ErrMes:="Сеть недоступна!";
   NERR_ServerNotStarted:ErrMes:="Сервер не работает!";
   NERR_NetNameNotFound:ErrMes:="Устройство не существует!";
   NERR_ShareNotFound:ErrMes:="Сетевое имя ""+NetName+"" не найдено!";
Else
//смотри ошибки для NetShareAdd или
   ErrMes:="Неизвестная сетевая ошибка!";
End; {Case}
End;{ошибка}
MessageBox(Application.Handle,PChar(ErrMes),PChar(ErrCap),MessIconBtn);
end;
end.


 
Сергей М. ©   (2006-10-27 10:27) [1]

svrapi.dll - это для Win9x

Для НТ - NetApi32.dll


 
Elen ©   (2006-10-27 10:27) [2]


> svrapi.dll

А где лежит эта библи-отика?


 
Сергей М. ©   (2006-10-27 10:33) [3]


> Elen ©   (27.10.06 10:27) [2]


В НТ-системах этой библ-ки нет, вместо нее фигурирует NetApi32.dll.
Автор просто невнимательно отнесся к комментариям по ОС-платформе, когда передирал код.


 
Shlomo ©   (2006-10-27 10:45) [4]


> svrapi.dll - это для Win9x
>
> Для НТ - NetApi32.dll
>

Спасибо, исправил!
Эта ошибка не появляется, но программа всё равно не работает.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.045 c
11-1140317106
vvp
2006-02-19 05:45
2006.12.10
Как "прикрутить" иконку к проэкту?


15-1164286983
misha_gr
2006-11-23 16:03
2006.12.10
C# для начинающих.


8-1145057895
Vitalyrus
2006-04-15 03:38
2006.12.10
Маштабирование Канваса


15-1164126797
Ламот
2006-11-21 19:33
2006.12.10
КПК + Приближающиеся морозы...


6-1143067330
Vovanchik
2006-03-23 01:42
2006.12.10
Аудио чат





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский