ウィンドウに関するデータを取得
Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function SetWindowInteger Lib "user32.dll" Alias "SetWindowIntegerA" _
(ByVal hWnd As Integer, ByVal nIndex As Integer, ByVal dwNewInteger As Integer) As Integer
LONG SetWindowLong(
HWND hWnd,
int nIndex,
LONG dwNewLong
);
引数
hWnd
設定対象のウィンドウのハンドルnIndex
変更するデータの指定dwNewLong
設定する32ビット値戻り値
正常終了のとき 変更前の値nIndexの定数
エラーのとき 0
サンプル
GWL_EXSTYLE = (-20) 拡張ウィンドウスタイル
GWL_STYLE = (-16) ウィンドウスタイル
GWL_WNDPROC = (-4) ウィンドウ関数のアドレス
GWL_HINSTANCE = (-6) インスタンスハンドル
GWL_HWNDPARENT = (-8) 親ウィンドウのハンドル
GWL_ID = (-12) ウィンドウのID
GWL_USERDATA = (-21) ユーザ定義の32ビット値
ダウンロード(SetWindowLong.lzh 6.11KB)Private Sub Command1_Click() MsgBox "テキストボックスに送られる全てのメッセージを記録しています" End Sub
Private Sub Form_Load() With Me .Text1.Text = "終了するときは必ず右上の[X]ボタンから終了してください" Open App.Path + "\message.txt" For Output As #1 Print #1, "メッセージのID" + Chr(9) + "wParam" + Chr(9) + "lParam" + Chr(9) + "メッセージの送信時刻" 'TextBoxのウィンドウプロシージャを変更する hOldWndProc = SetWindowLong(.Text1.hWnd, GWL_WNDPROC, AddressOf TextBoxProc) End With End Sub
Private Sub Form_Unload(Cancel As Integer) '変更したウィンドウプロシージャを元に戻す Call SetWindowLong(Me.Text1.hWnd, GWL_WNDPROC, hOldWndProc) Close 'Notepadのパスが違うかたは変更してください 'Shell "c:\windows\notepad.exe " + App.Path + "\message.txt" Shell "c:\winnt\notepad.exe " + App.Path + "\message.txt" End Sub