На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: jack128, Rouse_, Krid
  
    > Послать Alt + буква другому приложению , как
      Привет!
      Как мне программно нажать ALT + буква(VK_...) в другом приложении. Хендл я нашел, деляю так
      ExpandedWrap disabled
          SendMessage(Handle_, WM_KEYDOWN, VK_MENU,0);
          SendMessage(Handle_, WM_KEYDOWN, VK_F1,0);
          SendMessage(Handle_, WM_KEYUP, VK_F1,0);

      но у меня не получается, что не так?
        Попробуй так
        ExpandedWrap disabled
           
           SendMessage(Handle,WM_KEYDOWN,Byte(C),$20000001);

        У меня получилось! :D
          спасибо, вот есть еще такое:
          ExpandedWrap disabled
            Procedure PostKeyEx( hWindow: HWnd; key: Word; Const shift: TShiftState;
                                specialkey: Boolean );
            Type
             TBuffers = Array [0..1] of TKeyboardState;
            Var
             pKeyBuffers : ^TBuffers;
             lparam: LongInt;
            Begin
             (* check if the target window exists *)
             If IsWindow(hWindow) Then Begin
               (* set local variables to default values *)
               pKeyBuffers := Nil;
               lparam := MakeLong(0, MapVirtualKey(key, 0));
             
               (* modify lparam if special key requested *)
               If specialkey Then
                 lparam := lparam or $1000000;
             
               (* allocate space for the key state buffers *)
               New(pKeyBuffers);
               try
                 (* Fill buffer 1 with current state so we can later restore it.
                    Null out buffer 0 to get a "no key pressed" state. *)
                 GetKeyboardState( pKeyBuffers^[1] );
                 FillChar(pKeyBuffers^[0], Sizeof(TKeyboardState), 0);
             
                 (* set the requested modifier keys to "down" state in the buffer *)
                 If ssShift In shift Then
                   pKeyBuffers^[0][VK_SHIFT] := $80;
                 If ssAlt In shift Then Begin
                   (* Alt needs special treatment since a bit in lparam needs also be set*)
                   pKeyBuffers^[0][VK_MENU] := $80;
                   lparam := lparam or $20000000;
                 End;
                 If ssCtrl In shift Then
                   pKeyBuffers^[0][VK_CONTROL] := $80;
                 If ssLeft In shift Then
                   pKeyBuffers^[0][VK_LBUTTON] := $80;
                 If ssRight In shift Then
                   pKeyBuffers^[0][VK_RBUTTON] := $80;
                 If ssMiddle In shift Then
                   pKeyBuffers^[0][VK_MBUTTON] := $80;
             
                 (* make out new key state array the active key state map *)
                 SetKeyboardState( pKeyBuffers^[0] );
             
                 (* post the key messages *)
                 If ssAlt In Shift Then Begin
                   PostMessage( hWindow, WM_SYSKEYDOWN, key, lparam);
                   PostMessage( hWindow, WM_SYSKEYUP, key, lparam or $C0000000);
                 End
                 Else Begin
                   PostMessage( hWindow, WM_KEYDOWN, key, lparam);
                   PostMessage( hWindow, WM_KEYUP, key, lparam or $C0000000);
                 End;
                 (* process the messages *)
                 Application.ProcessMessages;
             
                 (* restore the old key state map *)
                 SetKeyboardState( pKeyBuffers^[1] );
               finally
                 (* free the memory for the key state buffers *)
                 If pKeyBuffers <> Nil Then
                   Dispose( pKeyBuffers );
               End; { If }
             End;
            End; { PostKeyEx }
            M
            Тема перенесена из Delphi -> Delphi: Система, Windows API
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0270 ]   [ 16 queries used ]   [ Generated: 27.04.24, 06:15 GMT ]