掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
マイコンピュータでファイルをダブルクリックし開く動作を実現するには (ID:101649)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんにちは。 >また、私がいまやりたいことは、MSHFlexGridにタイトルとファイル名の >一覧表を表示し、ファイル名をダブルクリックすると >そのファイルを開き、プログラム終了時に放置されたものを閉じたいのです APIの宣言は調べて下さい。 Command1_Clickで開き Command2_Clickで閉じます。 又、フォームのクローズでも閉じるチェックをしています。 フォームモジュールに Option Explicit Private pID As Long Private Sub Command1_Click() Dim strEXE As String Dim strData As String strEXE = "C:\Program Files\ACAD LT 2000\aclt.exe " strData = "D:\TEST.DWG" pID = Shell(strEXE & strData, vbNormalFocus) ' ' 起動待ち On Error Resume Next Do DoEvents Err.Clear AppActivate pID Loop Until Err.Number = 0 On Error GoTo 0 End Sub Private Sub Command2_Click() Dim lngHdl As Long Dim lngExitCode As Long Dim lngRtn As Long If pID = 0 Then Exit Sub lnghWnd = 0 ' CAD終了時にウィンドウがあるかチェック(無くてもよさそうですが一応 lngRtn = EnumWindows(AddressOf EnumWinProc, pID) If lnghWnd = 0 Then Exit Sub lngHdl = OpenProcess(PROCESS_QUERY_INFORMATION Or _ PROCESS_TERMINATE, 0, pID) lngRtn = GetExitCodeProcess(lngHdl, lngExitCode) lngRtn = TerminateProcess(lngHdl, lngExitCode) lngRtn = CloseHandle(lngHdl) pID = 0 End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Command2_Click End Sub 標準モジュールに Public lnghWnd As Long Public Function EnumWinProc(ByVal hWnd As Long, lParam As Long) As Boolean Dim lngThreadId As Long Dim lngProcesID As Long lngThreadId = GetWindowThreadProcessId(hWnd, lngProcesID) If lParam = lngProcesID Then lnghWnd = hWnd EnumWinProc = False Exit Function End If EnumPass: EnumWinProc = True End Function
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.