- PR -

System.Diagnostics.Processでのofficeアプリ起動制御

1
投稿者投稿内容
未記入
会議室デビュー日: 2006/09/08
投稿数: 3
投稿日時: 2006-09-08 10:52
おつかれさまです。

画面からボタン押下時にofficeアプリケーションを
System.Diagnostics.Processを使用し起動するプログラム作成しました。

アプリケーションは起動しますが、
そのアプリケーションを終了した後に
同画面上にあるテキストボックスにフォーカスを移動し
、ENTERキーを押すと先ほどのアプリケーションを起動する
Clickイベントが発生してしまいます。(一回だけ)

*起動するのはテキストボックスの時だけです。


この現象をどのようにすれば回避できるでしょうか。

よろしくお願いします。

[発生の流れ]
ボタン押下→OFFICEアプリケーション起動

アプリケーション終了

テキストボックスにフォーカスを移動

ENTERキー押下

先ほどのアプリケーションが起動される。

[VB.NET]

AddHandler Me.btnOpen.Click, AddressOf Ctrl_Click



Private Sub Ctrl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Try

Select Case sender.name
Case btnOpen.Name
SClickbtnOpen() 'ボタンイベント
End Select

Catch ex As Exception
Call S_SError(ex)
End Try
End Sub


Public Sub SClickbtnOpen() 'ボタンイベント

Dim result As Boolean
Dim errCod As String

Try
Dim P As System.Diagnostics.Process = System.Diagnostics.Process.Start(PASS.txt) 'アプリケーションの起動
If P Is Nothing Then
Else

P.WaitForExit()

End If
P = Nothing

End If

End With

Catch ex As Exception
Throw ex
Finally

End Try
End Sub
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-08 15:14
引用:

未記入さんの書き込み (2006-09-08 10:52) より:

アプリケーションは起動しますが、そのアプリケーションを終了した後に同画面上にあるテキストボックスにフォーカスを移動し、ENTERキーを押すと先ほどのアプリケーションを起動するClickイベントが発生してしまいます。(一回だけ)


ミニマム コードで試してみましたが、再現しませんね。
"テキストボックスにフォーカスを移動" については、'マウス' と 'Tab キー' 両方で試しました。

UpdateDefaultButton メソッド絡みの不具合かと思いましたが、
MDI 子フォームでない限りは起こらないと考えています。

タイトルに "Office アプリ" と書いてありますけど、この記述は不要のように思えます。
このご質問、Office アプリケーションである必要はないのですよね?

それと、コードを書いて頂けるのはありがたいですが、ミニマム コードで提示してください。
ミニマム コードで試すことで、問題の切り分けができることが多いです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2006/09/08
投稿数: 3
投稿日時: 2006-09-08 15:35
お疲れ様です。

現象はMDI子フォームで発生しています。
今のところオフィスアプリケーションの時に起こる事象なのです。

よろしくお願いします。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-09-08 16:10
引用:

未記入さんの書き込み (2006-09-08 15:35) より:
現象はMDI子フォームで発生しています。
今のところオフィスアプリケーションの時に起こる事象なのです。


最初からかいとけよ。そして少しは申し訳なく思え。
今回は回答者がよかったからこそ、ない情報を掘り出すことができたんだぞ。
運がよかったと思うべきだし。お前の少ない情報からここまで書いてくれたことに感謝を示すべき。

で本題だが過去ログを検索してみようぜ。解決策が書いてあるからさ。

[ メッセージ編集済み 編集者: ぶさいくろう 編集日時 2006-09-08 16:12 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-08 16:35
過去ログを検索するのであれば、回避策 "自体" を知らないと検索が難しいみたいです。
「MDI + UpdateDefaultButton」 とか 「MDI + ProcessDialogKey」 あたりになるでしょうか。

# 'UpdateDefaultButton' という単語は、私の発言中に既に出てきてはいますけども...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2006/09/08
投稿数: 3
投稿日時: 2006-09-08 17:06
お疲れ様です。

大変申し訳なく思ってます。

Protected Overrides Sub UpdateDefaultButton()

End Sub

を使用することにより、回避することができました。

少ない情報から導いていただき、ありがとうございました。




1

スキルアップ/キャリアアップ(JOB@IT)