아래 예는 메모장에서 Ctr+del를 누른 효과 만든겁니다.
아래에서 VK_CONTROL 대신 VK_SHIFT를 사용한후
SendMessage(Memo1.Handle,WM_KEYDOWN,VK_DELETE,0);를 마우스 좌측 클릭 메세지를 사용한후 SHIFT를 해제하시면 될것 같은데요
procedure TForm1.Button1Click(Sender: TObject);
var
pKeyboardState : ^TKeyboardState;
begin
New(pKeyboardState);
GetKeyboardState(pKeyboardState^); //초기 상태 구함
pKeyboardState^[VK_CONTROL] := $80; //Ctr키를 누를 상태로 설정
SetKeyboardState(pKeyboardState^);
SendMessage(Memo1.Handle,WM_KEYDOWN,VK_DELETE,0); //Ctr+del를 누른 효과
DirectX를 사용하는 게임과 같은 프로그램에선
이미 모든 키보드 제어권을 넘겨 받은 상태라서
일반적인 키보드 메세지 처리방법으로는 무리입니다.
그럼 프로그램에 메세지를 보내기 위해선
Hook 함수를 이용하시면 가능합니다.
헌데 Hook 함수를 사용할 경우 키조합간의 처리에 대해선...
음... 글쎄요...
수련이 많이 부족한터라...
아래에서 VK_CONTROL 대신 VK_SHIFT를 사용한후
SendMessage(Memo1.Handle,WM_KEYDOWN,VK_DELETE,0);를 마우스 좌측 클릭 메세지를 사용한후 SHIFT를 해제하시면 될것 같은데요
procedure TForm1.Button1Click(Sender: TObject);
var
pKeyboardState : ^TKeyboardState;
begin
New(pKeyboardState);
GetKeyboardState(pKeyboardState^); //초기 상태 구함
pKeyboardState^[VK_CONTROL] := $80; //Ctr키를 누를 상태로 설정
SetKeyboardState(pKeyboardState^);
SendMessage(Memo1.Handle,WM_KEYDOWN,VK_DELETE,0); //Ctr+del를 누른 효과
pKeyboardState^[VK_CONTROL] := $0; //Ctr키를 누를 상태해제
SetKeyboardState(pKeyboardState^);
end;
hsr///////////////////////////////////////