Foren: 一般話題(質疑・要望等) (Thread #50673)

【質問】コマンドラインのGrep置換利用時のサクラエディタポップアップエラーの検知方法を教えてください。 (2023-05-12 10:24 by たむ8901 #96782)

コマンドラインのGrep置換利用時のサクラエディタポップアップエラーの検知方法を教えてください。

当方、PowershellでコマンドラインのGrep置換を利用しており、バックグラウンド処理での正常系の処理は実現できることを確認しております。

ただ、その中で、手動でサクラエディタを起動した後に、Powershellにてスクリプト実行を行った際に下記のエラーが発生します。
---------------------------
sakura
---------------------------
エディタ間の対話に失敗しました。
権限レベルの異なるエディタが既に起動している可能性があります。
---------------------------
OK
---------------------------

このエラー自体は、サクラエディタを起動しなおす処理を入れて、なんとか解決できそうなのですが、
同様にエラーが発生した際に、どのように検知すればよいのかがわかりません。
バッチ処理のため、エラーがポップアップされた状態で、処理が止まるのは抑止したいです。

.NetFrameworkの「System.Diagnostics.Process」を利用して、サクラエディタを起動し、Grep置換コマンドラインを実行しております。
StandardErrorやExitCodeでの検知を試みたのですが、うまくいかず、Powershellの技術的な問題かもしれませんが、
ご教授いただけますと幸いです。

Reply to #96782×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Anmelden

Re: 【質問】コマンドラインのGrep置換利用時のサクラエディタポップアップエラーの検知方法を教えてください。 (2023-05-21 22:34 by AC #134733)

たむ8901さん、こんばんは。難しそうなことをしていらっしゃいますね。解決方法を持っているわけではないので力にはなれませんが、考えたことを書いてみます。

*エラーについて

このエラーは典型的には管理者権限で起動されたサクラエディタが常駐しているときに、通常ユーザーが新しくサクラエディタを起動したときに表示されます。あるいはその逆の順番でも。

サクラエディタを管理者として実行することが例外的なことなので、管理者として実行されることがないのを確かにしてエラーの発生をなくしたいなと、自分ならまず考えます。

*リカバリ方法について

サクラエディタを起動し直すことで解決できそうとのことですが、いまひとつすっきり状況がのみこめません。解決できましたか。できたのならその方法はどのようなものでしたか。エラーが発生する直接的な原因にも関わることなので具体的に知りたくなります。

常駐プロセスが通常ユーザーで起動されていてバッチプロセスが管理者権限を持っているためにエラーが発生しているのであれば、あらかじめ常駐プロセス(とその他の起動済みサクラエディタ)を殺す処理をバッチに追加することでエラーの発生を抑止したいなと考えます。エディタを強制終了するかなり乱暴なやり方ではありますが。逆に常駐プロセスが管理者権限を持っている場合は、常駐プロセスを殺すことができなくてエラーの発生が避けられないように思います。

*エラーの検知について

すみません。肝心のこの点で力になれません。識者の登場を待ちたいです。

*** ここまで書いた後でプロファイル機能について思い出しました。***

GREP オプションに追加して -PROF="grep" などてきとうな名前のプロファイルを指定しますと、grep\sakura.ini ファイルが作成されます。常駐プロセスがプロファイルごとに分離されているようで、プロファイル名がかぶらない限りは管理者権限のあるなしが異なるユーザーが同時にサクラエディタを起動できます。

バッチプロセス専用のプロファイル名とエディタ設定を用意するのはなかなかいい案に思いますがいかがでしょうか。
Reply to #96782

Reply to #134733×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Anmelden

Re: 【質問】コマンドラインのGrep置換利用時のサクラエディタポップアップエラーの検知方法を教えてください。 (2023-05-22 16:46 by たむ8901 #140462)

ACさん、こんにちわ。ご回答ありがとうございます。

>このエラーは典型的には管理者権限で起動されたサクラエディタが常駐しているときに、通常ユーザーが新しくサクラエディタを起動したときに表示されます。あるいはその逆の順番でも。
たしかに、現象としては、状況が一致しております。
まず、通常ユーザでサクラエディタを起動し、powershellからおそらく管理者権限で起動しているように思われます。

>サクラエディタを起動し直すことで解決できそうとのことですが、いまひとつすっきり状況がのみこめません。解決できましたか。
>できたのならその方法はどのようなものでしたか。エラーが発生する直接的な原因にも関わることなので具体的に知りたくなります。
こちらについては、まず、powershellのPGでサクラエディタを起動するまでに既に起動している場合は、Killし、powershellで起動をしております。ですので、起動は問題なくできておりました。
(言葉が拙く伝わりづらいかもしれません、、すみません、、、)
おっしゃるとおり、強制的にKillするのは、あまり実施したくなかったのですが、調査等の時間がなく、やむなしでそういった方法をとらせていただきました。

>すみません。肝心のこの点で力になれません。識者の登場を待ちたいです。
こちらに関しては、まだ解決には至っていないので、待ちたいと思います。

>GREP オプションに追加して -PROF="grep" などてきとうな名前のプロファイルを指定~
ありがとうございます!大変有効な手段と考えますので、今回のエラーに限っては、こちらの対応で進められそうです。
ですので、Killするのは、一旦取りやめ、時間がたっても処理が終わっていなければ、バッチ処理を終了するのみ(ポップアップエラーはそのまま)にとどめようと思います。

有意義なご回答いただきましてありがとうございました。
Reply to #134733

Reply to #140462×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Anmelden