こんにちは。
1週間前に「exe起動確認について」お問い合わせしていました。
解決していたのですが
問題が発生しました。
解決した当時は下記のコードをOnClickイベントに記入していましたが
今回OnCreateイベントに入れて実行したところ、
「プロジェクト○○○.exeは例外クラスEOleSysError(メッセージ'操作を利用できません')を送出しました。」というメッセージが発生し、
動作しませんでした。
何が原因なのでしょうか?
******************************************
procedure TfrmTest.Button1Click(Sender: TObject)
var
objExcel : OleVariant;
IsOpen : Boolean;
begin
try
objExcel := GetActiveOleObject('***.Application');
IsOpen := True;
except
on E: EOleSysError do begin
IsOpen := False;
end;
end;
if IsOpen then
begin
MessageBox(Handle, '×××は起動しています', '情報', MB_ICONINFORMATION);
end
else
begin
MessageBox(Handle, '×××は起動していません', '情報', MB_ICONINFORMATION);
end;
end;
******************************************
環境は
Delphi XE5 Enterprise
Windows 8.1 Pro 64bit
(1) まず,***.Application の *** というのは存在するのか ?
(2) OnCreate ではなく,Button1 クリックだとどうなのか ?
(3) IDE からコンパイルして実行した時と,作成した EXE を起動した時とではどうなのか ?
ちなみに,GetActiveOleObject は EXE の起動を確認するための関数ではありません.
GetActiveOleObject,は COM オブジェクトがアクティブ (Active) かどうかを確認するための関数です.
ン
そのコード、ヌチママを試してみて「ナマモナが発生したら、ナが起動していないと判断する」というロジックですよね。
ということは「ナが起動していなかったら、ナマモナが発生する」のは想定通りで、正常動作のうちじゃないんですか?
それとも、ナが起動しているにも関わらず例外が出るのでしょうか?
で、仮に正常動作のうち(ナが起動していないので例外が発生した)とした場合、
ヲサヲサ動作ません
と言いますが、それはデバッガが例外を捕まえていったん停止しているだけではないでしょうか。
ニオで継続してみて、正常に続行できるなら何の問題もないはずです。
(いちいち停止してほしくないなら、デバッガをそう設定すればいいですし)
スススススススススススススススススススススススススススススススススススススススス
ニコ ぴょん吉
トコ イーアカッーウッーウィ木ゥ アアコオキコウオ シ スュアセシ初心者セ シッニセシノヘヌ ス「コッッョョョッッアョ「 ス「ー「セ 書込者ノト:ロ 「。ィ ン
モコ
ヘョリメチルさん、さん アドバイスありがとうございました。
自分ながら嫌になっちゃいました。
さんのおっしゃる通り デバッガがメッセージが発生するのは当然でした。
もっと勉強せねば・・・・・
大変お騒がせして申し訳ありませんでした。
ツイート | ![]() |