Excel VBA質問箱 IV

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

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


60194 / 76736 ←次へ | 前へ→

【21185】Re:取得に成功
回答  G-Luck  - 05/1/14(金) 11:00 -

引用なし
パスワード
   成功例を示します。
下記コードを標準モジュールに記してください。
testを一度実行して、シャットダウン(ログアウト、再起動でも可)すると
「ついにWM_QUERYENDSESSIONを検知した!!」と表示され、OKクリックで
Bookを保存して、通常のシャットダウン処理を実行します。

ありがとうございました。

Option Explicit

'コールバック関数をセット
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
  (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

'デフォルトの処理へ
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
  (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, _
  ByVal wParam As Long, ByVal lParam As Long) As Long

'ウィンドウのハンドルを取得
Private Declare Function FindWindow Lib "USER32.dll" Alias "FindWindowA" _
  (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long
  
Private Const GWL_WNDPROC = (-4)  '定数?

Public lngRet As Long  'デフォルトの処理のアドレス

Private Sub test()
  '今回の実行用

  Dim strClassName As String
  Dim strWindowName As String
  Dim lngHwnd     As Long
  
  'エクセル自身なので
  strClassName = "XLMAIN"
  'ハンドルを取得
  lngHwnd = FindWindow(strClassName, strWindowName)

  lngRet = SetWindowLong(lngHwnd, GWL_WNDPROC, _
      AddressOf SubWindowProcedure)
End Sub

Private Function SubWindowProcedure(ByVal hWnd As Long, _
    ByVal iMsg As Long, ByVal wParam As Long, _
    ByVal lParam As Long) As Long

  Dim lngDefProp As Long
  
'ここから、独自処理

  Const WM_QUERYENDSESSION = &H11
  If iMsg = WM_QUERYENDSESSION Then
    MsgBox ("ついにWM_QUERYENDSESSIONを検知した!!")
    ThisWorkbook.Save
  End If
  
'ここまで
  
  'デフォルトウィンドウプロシージャの実行
  SubWindowProcedure = CallWindowProc(lngRet, hWnd, iMsg, _
      wParam, lParam)

End Function

0 hits

【21078】Windowsのシャットダウン時に処理を実行したい G-Luck 05/1/11(火) 11:43 質問
【21079】Re:Windowsのシャットダウン時に処理を実行... IROC 05/1/11(火) 11:54 回答
【21098】Re:Windowsのシャットダウン時に処理を実行... G-Luck 05/1/11(火) 18:40 回答
【21100】Re:Windowsのシャットダウン時に処理を実行... IROC 05/1/11(火) 21:28 回答
【21138】Re:Windowsのシャットダウン時に処理を実行... G-Luck 05/1/12(水) 19:49 質問
【21102】Re:Windowsのシャットダウン時に処理を実行... ぎこにゃーにゃん 05/1/11(火) 23:09 回答
【21103】Re:Windowsのシャットダウン時に処理を実行... ちゃっぴ 05/1/11(火) 23:40 発言
【21137】Re:Windowsのシャットダウン時に処理を実行... G-Luck 05/1/12(水) 19:46 質問
【21141】Re:Windowsのシャットダウン時に処理を実行... ちゃっぴ 05/1/13(木) 0:31 発言
【21142】Re:Windowsのシャットダウン時に処理を実行... ちゃっぴ 05/1/13(木) 0:45 回答
【21155】Re:Windowsのシャットダウン時に処理を実行... G-Luck 05/1/13(木) 15:37 発言
【21139】Re:Windowsのシャットダウン時に処理を実行... tester 05/1/12(水) 21:15 回答
【21154】Re:Windowsのシャットダウン時に処理を実行... G-Luck 05/1/13(木) 15:33 発言
【21156】すぐに終了を表示させない G-Luck 05/1/13(木) 15:45 発言
【21169】一瞬の取得成功 G-Luck 05/1/13(木) 18:09 発言
【21175】取得に成功 G-Luck 05/1/13(木) 20:23 お礼
【21185】Re:取得に成功 G-Luck 05/1/14(金) 11:00 回答
【21209】Re:取得に成功 [名前なし] 05/1/15(土) 2:22 発言
【21210】Re:取得に成功 ちゃっぴ 05/1/15(土) 2:39 発言
【21211】Re:取得に成功 [名前なし] 05/1/15(土) 3:08 発言
【21223】Re:取得に成功 G-Luck 05/1/15(土) 19:30 発言

60194 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free