tagCANDY CGI VBレスキュー(花ちゃん) - スクリーンセーバーの起動を防止する(VB6.0) - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
スクリーンセーバーの起動を防止する(VB6.0)
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

スクリーンセーバーの起動を防止する(VB6.0) [No.337の個別表示]
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
日時: 2013/07/07 19:10
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[システム関係][][]  
* キーワード:スクリーンセーバー , , , , ,  
***********************************************************************************
タイトル : スクリーンセーバーの解除
記 事 No : 14228
投 稿 日 : 2009/11/06(Fri) 17:31
元質問者 : ジョニー  

ずっと以前に納めたソフト(NT4)をXPに移行することになり、そのままのコードで流用していたのですが
スクリーンセーバーの解除ができない現象に悩まされています

 下記の一連のスレッドをご覧ください。
 http://hanatyan.sakura.ne.jp/vb60bbs/wforum.cgi?mode=allread&no=14228&page=0

-----------------------------------------------------------------------------------
記事No : 14230
投稿日 : 2009/11/06(Fri) 19:32
回答者 : オショウ  
-----------------------------------------------------------------------------------

'------------- Module1 に記入 ----------------
Option Explicit

Declare Function CallWindowProc Lib "user32" Alias _
    "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
    ByVal hMainWnd As Long, ByVal Msg As Long, _
    ByVal wParam As Long, ByVal lParam As Long) As Long

Declare Function SetWindowLong Lib "user32" Alias _
    "SetWindowLongA" (ByVal hMainWnd As Long, _
    ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    
Public Const GWL_WNDPROC As Long = -4
Public Const WM_SYSCOMMAND As Long = &H112&
Public Const SC_SCREENSAVE As Long = &HF140&
    
Private lpPrevWndProc As Long
Private hWndBack      As Long

Public Sub Hook(ByVal hMainWnd As Long)
    hWndBack = hMainWnd
    lpPrevWndProc = SetWindowLong(hMainWnd, GWL_WNDPROC, AddressOf WndProc)
End Sub

Public Sub Unhook()
    Dim temp As Long
    temp = SetWindowLong(hWndBack, GWL_WNDPROC, lpPrevWndProc)
End Sub

Public Function WndProc(ByVal hw As Long, ByVal uMsg As _
       Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Select Case uMsg
    Case WM_SYSCOMMAND
        If wParam = SC_SCREENSAVE Then
            WndProc = 1
            Exit Function
        End If
    End Select
    WndProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End Function



'------------- Form1 に記入 ----------------

Option Explicit

Private Sub Form_Load()
    Call Hook(Me.hWnd)
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Unhook
End Sub


上記実行中は、スクリーンセーバーが起動しません。
尚、上記コードは、サブクラス化しておりますので、サブクラス化についての知識のない方は使用しないように
して下さい。

Windows 7 / Visual Basic 6.0(SP6)(スクリーンセーバーは、3Dテキスト) の環境で動作確認済み
メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ