掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
外部プログラムの起動後の処理 (ID:82281)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ええーと、SendKeysは"アクティブなフォームにキーを送る"だけの手続きだから、 起動直後に送ったのでは失敗する可能性の方が高いのでは?と思ったのです。 質問者さんのことを考えると、なるべくかんたんにした方がいいかな…とおもっていながら、 結局説明足らずになってしまいましたね^^;ごめんなさいm(__)m たとえば、その前にSendMessageでWM_NULLを送って、ちょっと待ってみるとか、SetForegroundWindowを使うとか——ですね。 ちなみに、わたしはこういう風にしました。Delphiのものです。 hNotePad, hDebugNoteという変数は、あらかじめHWND型(VBでならLongが適当でしょう)で宣言しておきます。 NotePadClassName, NotePadEditClass定数は、 前から"メモ帳のクラス名"、"メモ帳のエディタのクラス名"です。 // メモ帳を起動し、デバッグモニタ代わりに使う(Delphiの無償版には、デバッグログを表示する機能がないので) WinExec(NotePadFileName,SW_SHOW); hNotePad := FindWindow(NotePadClassName,nil); SendMessage(hNotePad,WM_NULL,0,0); hDebugNote := FindWindowEx(hNotePad,0,NotePadEditClass,nil); SetWindowText(hNotePad,'DebugUnitレポート'); // デバッグモニタが下がっちゃ意味ないので、最前面表示 SetWindowPos(hNotePad,HWND_TOPMOST,0,0,0,0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE); こうしておいて、送信するときは SendMessage(hDebugNote, EM_REPLACESEL, 0, lParam(PChar(Str))); とやります。ただし、この場合メモ帳がすでに起動してるときにはどうなるかわかりません。 メモ帳でキャレット位置をいじっちゃった場合も、挿入場所がおかしくなります。 デバッグモニタなら、もう少ししっかりするべきでしょうね。 WinExecなんかより、ShellExecuteとかを使いなよという意見もあるでしょうが、とりあえずそのつっこみはなしで(^^ゞ
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.