Форум: "Основная";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];
ВнизAV в обработчике сообщений... Найти похожие ветки
← →
istok2 (2008-12-05 17:09) [0]создаю окно:
FWindowHandle := CreateInVisibleWindow(cAppFltrWindow, HookProc);
обработчик сообщений окна такой:procedure TAppBlocker.HookProc(var Msg: TMessage);
var
Block: Boolean;
begin
case Msg.Msg of
$0400 + 100:
begin
Block := False;
if Assigned(FOnAppCreateEvent) then
FOnAppCreateEvent(Self, Msg.WParam, Block);
if Block then
weTerminateProcess(Msg.WParam);
end;
else
Msg.Result := DefWindowProc(FWindowHandle, Msg.Msg, Msg.WParam,
Msg.LParam);
end;
end;
в каких-то оч редких случаях в win2003 в строкеMsg.Result := DefWindowProc(FWindowHandle, Msg.Msg, Msg.WParam, Msg.LParam);
вылетает AV. Что тут неверно и почему может быть av?
← →
Leonid Troyanovsky © (2008-12-05 17:16) [1]
> istok2 (05.12.08 17:09)
> вылетает AV. Что тут неверно и почему может быть av?
И кто такой CreateInVisibleWindow.
--
Regards, LVT.
← →
Сергей М. © (2008-12-05 17:19) [2]
> cAppFltrWindow
Это что за окно, родительское что ли ?
А какой тайный смысл в этом - создавать дочернее окно, которое никогда не будет видимым ?
← →
istok2 (2008-12-05 17:22) [3]
> И кто такой CreateInVisibleWindow.
function CreateInVisibleWindow(const WndClass: string; Method: TWndMethod): HWND;
var
UtilWindowClass: TWndClass;
function AllocateWnd(Method: TWndMethod): HWND;
var
TempClass: TWndClass;
ClassRegistered: Boolean;
begin
UtilWindowClass.hInstance := HInstance;
{$IFDEF PIC}
UtilWindowClass.lpfnWndProc := @DefWindowProc;
{$ENDIF}
ClassRegistered := GetClassInfo(HInstance, UtilWindowClass.lpszClassName,
TempClass);
if not ClassRegistered or (TempClass.lpfnWndProc <> @DefWindowProc) then
begin
if ClassRegistered then
Windows.UnregisterClass(UtilWindowClass.lpszClassName, HInstance);
Windows.RegisterClass(UtilWindowClass);
end;
Result := CreateWindowEx(WS_EX_TOOLWINDOW, UtilWindowClass.lpszClassName,
"", WS_POPUP {!0}, 0, 0, 0, 0, 0, 0, HInstance, nil);
if Assigned(Method) then
SetWindowLong(Result, GWL_WNDPROC, Longint(MakeObjectInstance(Method)));
end;
begin
with UtilWindowClass do
begin
style := 0;
lpfnWndProc := @DefWindowProc;
cbClsExtra := 0;
cbWndExtra := 0;
hInstance := 0;
hIcon := 0;
hCursor := 0;
hbrBackground := 0;
lpszMenuName := nil;
lpszClassName := PChar(WndClass);
end;
Result := AllocateWnd(Method);
end;
> Это что за окно, родительское что ли ?
> А какой тайный смысл в этом - создавать дочернее окно, которое
> никогда не будет видимым ?
для приемки и обработки сообщений от дллки.
← →
Сергей М. © (2008-12-05 17:26) [4]Ах вон оно что ..
Непонятно только, зачем было городить огород со своей ф-цией, в то время как штатная AllocateHWnd делат то же самое, ну разве что имя класса окна в ней жестко прописано ..
← →
Leonid Troyanovsky © (2008-12-05 17:41) [5]
> istok2 (05.12.08 17:09)
> вылетает AV. Что тут неверно и почему может быть av?
Возможно, что окно FWindowHandle так и не создали.
Проверок-то нет никаких.
> в каких-то оч редких случаях в win2003 в строке
В каких-каких?
--
Regards, LVT.
← →
istok2 (2008-12-05 17:43) [6]
> В каких-каких?
не знаю, просто у юзера одного вылетело первый раз за несколько месяцев...
← →
Leonid Troyanovsky © (2008-12-05 17:47) [7]
> istok2 (05.12.08 17:22) [3]
> для приемки и обработки сообщений от дллки.
Сообщения от длл примет любое сущ. окно приложения.
За чем же городить огород?
--
Regards, LVT.
← →
istok2 (2008-12-05 17:51) [8]это приложение без окон.
← →
Slym © (2008-12-05 17:59) [9]istok2 (05.12.08 17:09)
винда эксепшинами не кидается... если только стек не порушили...
istok2 (05.12.08 17:43) [6]
стечение обстоятельств, аккомулирующаяся ошибка ,битая память
← →
istok2 (2008-12-05 18:02) [10]вот повешу я там тупо try except - не будет ли потом последствий более жестких?
← →
Leonid Troyanovsky © (2008-12-05 18:03) [11]
> istok2 (05.12.08 17:51) [8]
> это приложение без окон.
Консольное?
Что за .. пытки партизанки?
Выкладывай все, на. Или иди, на.
--
Regards, LVT.
← →
Slym © (2008-12-05 18:06) [12]istok2 (05.12.08 18:02) [10]
что жесче поломаного стека?
← →
Сергей М. © (2008-12-05 19:51) [13]
> для приемки и обработки сообщений от дллки
А не по барабану ли кто является отправителем сообщения ?
ты к чему вообще упомянул dll ?
Лучше бы показал свой цикл ожидания/выборки/диспетчеризации оконных сообщений ..
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c