2

キーストロークを Delphi のメモ帳ウィンドウに送信しようとしています。それは私がこれまで持っているコードです:

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  windows,
  messages;

var
  H : HWND;

begin
  H := FindWindowA(NIL, 'Untitled - Notepad');
  if H <> 0 then begin
    SendMessage(H, WM_KEYDOWN, VK_CONTROL, 1);
    SendMessage(H, WM_KEYDOWN, MapVirtualKey(ord('v'), 0), 1);
    SendMessage(H, WM_KEYUP, MapVirtualKey(ord('v'), 0), 1);
    SendMessage(H, WM_KEYUP, VK_CONTROL, 1);
  end;
end.

この例も見つけました:

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  windows,
  messages;

var
  H : HWND;
  I : Integer;
  s : String;

begin
  h := FindWindowA(NIL, 'Untitled - Notepad');
  if h <> 0 then
  begin
    h := FindWindowEx(h, 0, 'Edit', nil);
    s := 'Hello';
    for i := 1 to Length(s) do
    SendMessage(h, WM_CHAR, Word(s[i]), 0);
    PostMessage(h, WM_KEYDOWN, VK_RETURN, 0);
    PostMessage(h, WM_KEYDOWN, VK_SPACE, 0);
  end;
end.

CTRL+V をシミュレート/Parentwindow に送信して、他のアプリケーションでも動作するようにするにはどうすればよいですか? すべてのアプリケーションがメモ帳と同じ ClassNames とコントロールを持っているわけではありません。

4

1 に答える 1