キーボードショートカットをマクロから実No.08005
kurin さん 21/04/22 16:53
 
お尋ねします。

Ctrl+N(新規メール)のようなキーボードショートカットをマクロから実行すること
は可能でしょうか。

よろしくお願いします。

[ ]
RE:08005 キーボードショートカットをマクNo.08006
秀まるお2 さん 21/04/22 17:02
 
 マクロから任意のコマンド実行させたいってことでしょうか。

 例えば新規メールコマンドを実行する例だと、

    loaddll "tkinfo.dll";
    #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 40001, 0);

 みたいになります。

 新規メールのコマンドは、内部的に、40001番となってます。0x111というのは「WM
_COMMAND」ってメッセージになります。

 コマンドの内部的なコードは、「マクロ・マクロ登録...」の「コマンド置き換
え」のページにある「コマンドの番号を調べる」を押して取得可能です。

 ちなみに複数のコマンドを連続実行させたい場合はBypass_PostMessageではダメで、

    #n = sendmessage(hidemaruhandle(0), 0x111, 40001, 0);

 のようにsendmessageを使う必要があります。

[ ]
RE:08006 キーボードショートカットをマクNo.08014
kurin さん 21/04/23 09:04
 
実際には、設定のキー割り当てにて、カーソル位置に署名を挿入にCtrl+Iを割り当て
ています。

このCtrl+Iを、マクロから実行できないかということです。

よろしくお願いします。


[ ]
RE:08014 キーボードショートカットをマクNo.08016
秀まるお2 さん 21/04/23 09:39
 
 Ctrl+Iとかのキー入力をシミュレートする用の、SimulateKeyStokeおよびSimulate
KeyStroke2って関数があるにはありますが、これでコマンド実行させるのはうまくい
かないです。

 とりあえず、その「カーソル位置に署名を挿入」のコマンドコードは40399となっ
てまして、マクロとしては、

    loaddll "tkinfo.dll";
    #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 40399, 0);

 または

    #n = sendmessage(hidemaruhandle(0), 0x111, 40399, 0);

 ってマクロで期待した動作が可能です。

 これでどうでしょうか。

[ ]
RE:08016 キーボードショートカットをマクNo.08022
kurin さん 21/04/23 11:36
 
マクロ登録のコマンド置き換えからコマンドの番号を調べていたのですが、エディ
タ・ウィンドウしか見ていなくて見つけられませんでした。

キー割り当て可能コマンドを見ればよかったのですね、今気づきました。

ご丁寧にありがとうございました。

[ ]