Форум: "WinAPI";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];
ВнизПомогите найти ошибку Найти похожие ветки
← →
Moscower (2001-11-16 16:13) [0]Видимо, конечно, в силу моей криворукости при программировании WinApi на Delphi возникают ошибки... :-( Подскажите пожалуйста, что я делаю не так?
program MVROrganizer;
uses
Windows, Dialogs, SysUtils, ole2auto,
Forms,
Tray in "Tray.pas" {Form1};
var fmhandle : HWND;
tekhandl : PChar;
temp : LongWord;
ptk, p1 : pointer;
outp : String;
lpMsgBuf : String;
{$R *.res}
begin
Application.Initialize;
tekhandl := PChar(IntToStr(Application.Handle)); // Находим хэндл главной формы приложения и запоминаем его в переменную tekhandl
fmhandle := CreateFileMapping(HWND($FFFFFFFF), nil, PAGE_READONLY, 0, sizeof(HWND), "Moscower"); // создаем карточный файл
if GetLastError<>ERROR_ALREADY_EXISTS then
begin
Application.CreateForm(TForm1, Form1);
if not WriteFile(fmHandle, ptk, sizeof(tekhandl), temp, nil) // пытаемся записать в него хэндл главной формы приложения
then
begin
// если ошибка
SetLength(lpMsgBuf, 256);
SetLength( lpMsgBuf, FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_SYSTEM,
nil,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
@lpMsgBuf[1],
255,
nil
));// то формируем сообщение о ней
MessageBox( Application.Handle, Pchar(lpMsgBuf), "GetLastError", MB_OK or MB_ICONINFORMATION ); // И выводим на экран
CloseHandle(fmhandle);
Application.Run;
end ;
end
end.
Код для обработки ошибки взял из SDK, видимо неудачно перевел его с C на Delphi...
Ошибки:
1. В карточный файл ничего не записывается и он идет на ошибку
2. Не могу получить сообщение об ошибке, вместо него показывается непереводимый набор символов.
Поправьте меня пожалуйста, как это нужно делать?
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.003 c