exe起動確認について


ぴょん吉  2016-03-02 23:29:39  No: 48044

こんにちは。
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


Mr.XRAY  2016-03-02 23:56:44  No: 48045

(1) まず,***.Application の *** というのは存在するのか ?
(2) OnCreate ではなく,Button1 クリックだとどうなのか ?
(3) IDE からコンパイルして実行した時と,作成した EXE を起動した時とではどうなのか ?

ちなみに,GetActiveOleObject は EXE の起動を確認するための関数ではありません.
GetActiveOleObject,は COM オブジェクトがアクティブ (Active) かどうかを確認するための関数です.


tor  2016-03-03 01:13:04  No: 48046

そのコード、ヌチママを試してみて「ナマモナが発生したら、ナが起動していないと判断する」というロジックですよね。
ということは「ナが起動していなかったら、ナマモナが発生する」のは想定通りで、正常動作のうちじゃないんですか?
それとも、ナが起動しているにも関わらず例外が出るのでしょうか?

で、仮に正常動作のうち(ナが起動していないので例外が発生した)とした場合、
ヲサヲサ動作ません
と言いますが、それはデバッガが例外を捕まえていったん停止しているだけではないでしょうか。
ニオで継続してみて、正常に続行できるなら何の問題もないはずです。
(いちいち停止してほしくないなら、デバッガをそう設定すればいいですし)
スススススススススススススススススススススススススススススススススススススススス
ニコ ぴょん吉
トコ イーアカッーウッーウィ木ゥ アアコオキコウオ シ  スュアセシ初心者セ シッニセシノヘヌ ス「コッッョョョッッアョ「 ス「ー「セ 書込者ノト:ロ 「。ィ  ン
モコ 

ヘョリメチルさん、さん  アドバイスありがとうございました。

自分ながら嫌になっちゃいました。
さんのおっしゃる通り  デバッガがメッセージが発生するのは当然でした。
もっと勉強せねば・・・・・
大変お騒がせして申し訳ありませんでした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加