アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、PostMessageを利用して外部のexeへファイル名(フルパス)を送信して、
そのファイルをexeで読み込むようにさせています。
以下、そのプログラムです。

CWnd *hWnd = FindWindow("ConsoleWindowClass", "C:\\WINDOWS\\system32\\cmd.exe");
char str[256]="C://sumple//test.txt\n"
int len = 256;

for( int i=0; i<len; i++ ){
____char c;
____c = toupper( str[i] );
____switch( str[i] )
____{
________case '\n':
________c = VK_RETURN;
________break;
____}
____hWnd->PostMessage(WM_KEYDOWN, c, 0 );
}

ところが、たとえばファイルパスが"C://sumple//aa.txt\n"
のように、同じ文字が連続して存在すると"aa.txt"ではなく"a.txt"として送信されてしまいます。
このような現象にはどう対応すればよいのでしょうか?

また、"/"や"."などの記号は"Csumpleaatt\n"のように存在しないとして処理されているようなので

case '/':
____hWnd->PostMessage(WM_KEYDOWN, VK_DIVIDE, 0 );
____break;

のように直接仮想キーコードで入力しています。(こちらは上手くいっています)

文字の連続で起こる現象にも使えるかと思って

case 'a':
____hWnd->PostMessage(WM_KEYDOWN, 0x41, 0 );
____break;

としてみたのですが、やはり駄目でした。
ファイル名に連続した文字を使わなければいいのでしょうが、汎用性を持たせるためにもどうにか解決したいと思います。
どうかご解答をお願いします。

A 回答 (1件)

WM_KEYDOWN/WM_KEYUPをセットで送るようにしてみてはいかがでしょう

この回答への補足

セットで送るとはどういうことでしょうか?
hWnd->PostMessage(WM_KEYDOWN/WM_KEYUP, c, 0 );

hWnd->PostMessage(WM_KEYDOWN, c, 0 );
hWnd->PostMessage(WM_KEYUP, c, 0 );
ではないですよね?

補足日時:2008/11/03 15:41
    • good
    • 1
この回答へのお礼

Sleepを入れたら解決しました。
どうもお騒がせしました。
あと、間違えて同じ質問を二度してしまって申し訳ないです・・・
ポイントは二度目の質問と合わせて出させていただきました。

お礼日時:2008/11/03 16:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!