| [ 仮想キーコードの送信方法 ]http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+201907/19070005.txt
 
 >エンターキーは送信されません。
 
 キーコードは送信されています.
 Enter キーの押下としては機能していないだけです.
 以下で確認できます.
 
 //=============================================================================
 //  SendMessage でキーコードを送る
 //=============================================================================
 procedure TReceivForm.Button1Click(Sender: TObject);
 begin
 Memo1.Clear;
 
 SendMessage(Memo1.Handle, WM_KEYDOWN, VK_RETURN, 0);
 SendMessage(Memo1.Handle, WM_KEYUP,   VK_RETURN, 0);
 
 SendMessage(Memo1.Handle, WM_KEYDOWN, VK_Shift, 0);
 SendMessage(Memo1.Handle, WM_KeyDown, VK_LEFT,  0);
 SendMessage(Memo1.Handle, WM_KEYUP,   VK_LEFT,  0);
 SendMessage(Memo1.Handle, WM_KEYUP,   VK_Shift, 0);
 end;
 
 //=============================================================================
 //  PostMessage でキーコードを送る
 //  PostMessage はメッセージキューにポストする
 //  この場合はキーの情報をポストする
 //=============================================================================
 procedure TReceivForm.Button2Click(Sender: TObject);
 begin
 Memo1.Clear;
 
 PostMessage(Memo1.Handle, WM_KEYDOWN, VK_RETURN, 0);
 PostMessage(Memo1.Handle, WM_KEYUP,   VK_RETURN, 0);
 
 PostMessage(Memo1.Handle, WM_KEYDOWN, VK_Shift, 0);
 PostMessage(Memo1.Handle, WM_KeyDown, VK_LEFT,  0);
 PostMessage(Memo1.Handle, WM_KEYUP,   VK_LEFT,  0);
 PostMessage(Memo1.Handle, WM_KEYUP,   VK_Shift, 0);
 end;
 
 //=============================================================================
 //  Memo1 の OnKeyDown イベント処理
 //=============================================================================
 procedure TReceivForm.Memo1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
 begin
 Memo1.Lines.Add('OnKeyDown  $' + IntToHex(Key, 4));
 end;
 
 //=============================================================================
 //  Memo1 の OnKeyup イベント処理
 //=============================================================================
 procedure TReceivForm.Memo1KeyUp(Sender: TObject; var Key: Word;
 Shift: TShiftState);
 begin
 Memo1.Lines.Add('OnKeyUp  $' + IntToHex(Key, 4));
 end;
 
 //=============================================================================
 //  ApplicationEvents1 の OnMessage イベント処理
 //  WM_KEYDOWN, WM_KEYUP 等はメッセージキューにポストされた値を取得する
 //  メッセージキューにポストするには PostMessage を使用する
 //  SendMessage はメッセージキューにはポストしない
 //=============================================================================
 procedure TReceivForm.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
 var
 Ltext : string;
 begin
 if Msg.hwnd = Memo1.Handle then begin
 if Msg.message = WM_KEYDOWN then begin
 Ltext := 'WM_KEYDON  $'
 + IntToHex(Msg.wParam, 4)
 + '  $' + IntToHex(Msg.lParam, 4);;
 Memo1.Lines.Add(Ltext);
 end else
 if Msg.message = WM_KEYUP then begin
 Ltext := 'WM_KEYUP  $'
 + IntToHex(Msg.wParam, 4)
 + '  $' + IntToHex(Msg.lParam, 4);;
 Memo1.Lines.Add(Ltext);
 end;
 end;
 end;
 
 
  |