На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Не могу поймать WM_NOTIFY
    Почему я не могу поймать сообщение WM_NOTIFY? Какие возможные причины могуть быть?


    ExpandedWrap disabled
       WM_NOTIFY:
           case PNMHdr(lparam)^.code of
              PSN_APPLY: MessageBox(hwnd,buf,'',MB_OK);
           end;
      у меня так работает:
      ExpandedWrap disabled
        var nm:PNMHDR;
        ...
        WM_NOTIFY:
            begin
              nm:=PNMHDR(Lparam);
              if nm.code = TCN_SELCHANGE then
              begin
              ...
              end;
            end;
        ...
        Никак не хочет работать...
          Вы б не могли представить рабочий фрагмент кода?
            Цитата
            nrcu, 30.12.03, 11:59
            Вы б не могли представить рабочий фрагмент кода?

            <_< а в Сообщ. #2 что тогда?
              Имеется ввиду код программы. А то, может, я что-то с окном напутал?
                ааа... понял что тебе надо...
                WM_NOTIFY чего ты хотишь поймать
                я например ловил от WC_TABCONTROL, а ты?
                возможно у эл-та нотифи которого ты ловишь надо указать чтоб он эти нотифи посылал окну...
                  Вот фрагмент моего кода... Возможно, я с главным окном нафурычил, т.к. сообщение WM_HOTKEY ловится вообще черт знает где???

                  ExpandedWrap disabled
                    var
                      hWnd: THandle;
                      WndClass: TWndClass;
                      Msg: TMsg;
                      TaskBarCreated: Integer;
                     
                    function WindowProc(hWnd: THandle; uMsg, wParam, lParam: Integer): Integer; stdcall; export;
                    begin
                     Result := 0;
                      if uMsg = TaskBarCreated then
                      TaskBarAddIcon(hWnd, ICON_OPEN, LoadIcon(hInstance, 'OPEN'), WM_ICON_OPEN, PChar(ShowHint));
                      //Сообщения от меню
                       case uMsg of
                         WM_COMMAND:
                          case wParam of
                           ID_SETTING:
                            begin
                             InitPropertySheet;
                             PropertySheet(psh);
                            end;
                         WM_TIMER:
                           if wParam = ID_TIMER_TRANSPARENT then
                            if not GetTransparentText($FFFFFFFF) then TransparentText(False);
                        // Остальные сообщения Windows
                        WM_DESTROY:
                          begin
                           if SetTimer(hWnd, ID_TIMER_TRANSPARENT, 500, nil) <> 0 then
                            KillTimer(hwnd, ID_TIMER_TRANSPARENT);
                            PostQuitMessage(0);
                           Exit;
                          end;
                       else
                      Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
                     end;
                    end;
                     
                    begin
                     FillChar(WndClass, SizeOf(WndClass), 0);
                      with WndClass do begin
                       hInstance      := SysInit.hInstance;
                       lpszClassName  := 'myWindow';
                       lpfnWndProc    := @WindowProc;
                      end;
                       RegisterClass(WndClass);
                       hWnd := CreateWindow('myWindow', '', 0, 0, 0, 0, 0, 0, 0, hInstance, NIL);
                      if hWnd = 0 then begin
                       if MessageBox(hwnd,'Error', '', MB_ICONERROR or MB_OK) = ID_OK then Exit;
                      end;
                      //Регистрация сообщения о перезапуске Explorer`а
                      TaskBarCreated := RegisterWindowMessage('TaskbarCreated');
                      //Скрываем окно
                      ShowWindow(hWnd, SW_HIDE);
                     //Цикл обработки сообщений
                     repeat
                      waitMessage;
                       while GetMessage(Msg, 0, 0, 0) do begin
                        TranslateMessage(Msg);
                        DispatchMessage(Msg);
                         //Сообщение WM_HOTKEY я ловлю здесь, т.к. в окне WindowProc
                         //оно не хочет ловится почему-то???
                         if msg.message = WM_HOTKEY then
                          case msg.wParam of
                           ID_HOTKEY_OPENTIME: MessageBox(hwnd, 'HOTKEY пойман!', '', MB_OK);
                          end;
                       end;
                      Halt(Msg.wParam);
                     until FALSE;
                     
                    end.
                    или что-то не так или одно из двух - ну не вижу я WM_NOTIFY в приведенном коде
                    а про WM_HOTKEY - да, ты точно нахимичил что-т не то - в WindowProc должно ловится нормально...
                      WM_NOTIFY я просто не представил, т.к. меня заинтересовал WM_HOTKEY. Думаю, что если будет ловиться WM_HOTKEY, то и WM_NOTIFY поймается.
                        ладно WM_HOTKEY - так WM_HOTKEY - вот мой пример по этому поводу:

                        так устанавливаю
                        ExpandedWrap disabled
                          RegisterHotKey(wnd,100,0,VK_TAB);
                          RegisterHotKey(wnd,101,0,VK_F1);
                          RegisterHotKey(wnd,102,0,VK_F2);

                        так ловлю
                        ExpandedWrap disabled
                          WM_HOTKEY:
                              begin
                                case HiWord(Lparam) of
                                  VK_F1:...;
                                  VK_F2:...;
                                  VK_TAB:...;
                                  end;
                                end;
                                Result:=DefWindowProc(wnd,msg,wparam,lparam);
                              end;

                        так удаляю
                        ExpandedWrap disabled
                          UnregisterHotKey(wnd,100);
                          UnregisterHotKey(wnd,101);
                          UnregisterHotKey(wnd,102);
                        Сообщение отредактировано: ZEE -
                          Это все понятно, но в окне WindowProc сообщение WM_HOTKEY не ловится.
                            у меня ловится :blink:
                              А как создается окно???
                                так:
                                ExpandedWrap disabled
                                  MainWnd:=CreateWindowEx(WS_EX_WINDOWEDGE,
                                      wc.lpszClassName,'bla-bla-bla',WS_CAPTION or WS_SYSMENU or WS_MINIMIZEBOX or WS_THICKFRAME,
                                      0,0,300,200, 0,MainMenu,Hinstance, nil);

                                что с этим могут быть траблы?
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0367 ]   [ 15 queries used ]   [ Generated: 18.05.24, 17:19 GMT ]