Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1392 / 2272 ツリー ←次へ | 前へ→

【7338】他アプリケーションの操作に関して 藤田と申します。 06/2/21(火) 11:18 質問[未読]
【7352】Re:他アプリケーションの操作に関して 小僧 06/2/22(水) 10:06 発言[未読]
【7358】Re:他アプリケーションの操作に関して たぬき 06/2/22(水) 15:17 回答[未読]
【7376】Re:他アプリケーションの操作に関して たぬき 06/2/23(木) 16:21 発言[未読]

【7338】他アプリケーションの操作に関して
質問  藤田と申します。  - 06/2/21(火) 11:18 -

引用なし
パスワード
   はじめまして。PC上で起動されている他のアプリケーション(MS Office製品以外)を終了させる方法を探しています。ご存知の方がおられましたら、是非ご教授願います。

【7352】Re:他アプリケーションの操作に関して
発言  小僧  - 06/2/22(水) 10:06 -

引用なし
パスワード
   ▼藤田と申します。 さん:
こんにちは。

>PC上で起動されている他のアプリケーション(MS Office製品以外)を終了させる方法

AccessVBA はそのような機能はないですね。

Access からお望みのような事をされたい場合は、Windows の機能を呼び出す形になります。
「EnumProcesses」辺りでWeb検索をされてみて下さい。


実行中のプロセスでしたら以下の様なコードで取得可能です。

Sub イミディエトウィンドウに起動中プロセスを列挙()
Dim P As Object
  For Each P In GetObject("WINMGMTS:").InstancesOf("WIN32_PROCESS")
    Debug.Print P.Name,
  Next
End Sub

藤田と申します さんの環境ですとどのようなアプリケーションが
起動されているかは解りませんが、Office以外の製品は全て停止してしまって
本当に大丈夫でしょうか。

例えばウィルス対策ソフトなど常駐させておかなければならないものも多々ありますよね。

○○以外のソフトは(判断せずに)全て停止してしまう、というのは乱暴な処理だと思いますよ。

【7358】Re:他アプリケーションの操作に関して
回答  たぬき  - 06/2/22(水) 15:17 -

引用なし
パスワード
   ACCESSの機能ではありませんがハンドルを取得して
WM_CLOSEを送るとか・・・

【7376】Re:他アプリケーションの操作に関して
発言  たぬき  - 06/2/23(木) 16:21 -

引用なし
パスワード
   小僧さんの書かれたようにプロセスを調べるのが普通です。

ここではもっと簡単な方法を書きます。
ただしフォームが一つでキャプションが変わらないものに限ります。

例として電卓を終了させるものを作ってみます。

1.フォームを作成してコマンドボタンを貼り付けます。

2.コマンドボタンのプロパティを開けて名前をcmd1にします。

3.AltとF11キーを同時に押してコードエディターを開きます。

4.コード部に以下のコードを書きます。

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWnidowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

Private Const WM_CLOSE = &H10

4.上のコンボボックスからcmd1とClickを選びます。
すると
Private Sub cmd1_DblClick(Cancel As Integer)

End Sub

のようになるのでその間に
  Dim hw As Long
  Dim rc As Long
    
  hw = FindWindow(vbNullString, "電卓")
  If hw <> 0 Then
    rc = SendMessage(hw, WM_CLOSE, 0, 0)
  End If
と書きます。

予め電卓を起動させておいて、このフォームのボタンをクリックして
電卓が終了するか確かめてください。

1392 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free