<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Hook setzen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bekomme das einfach nicht hin in c++. Unter VB läufts einwandfrei!<br />
Kann mir jemmand sagen wie ich das in c++ hinbekomme ?</p>
<pre><code class="language-cpp">Option Explicit

Private Declare Function SetWindowLong Lib &quot;user32&quot; _
        Alias &quot;SetWindowLongA&quot; (ByVal hWnd As Long, _
        ByVal nIndex As Long, ByVal dwNewLong As Long) _
        As Long

Private Declare Function CallWindowProc Lib &quot;user32&quot; _
        Alias &quot;CallWindowProcA&quot; (ByVal lpPrevWndFunc _
        As Long, ByVal hWnd As Long, ByVal Msg As _
        Long, ByVal wParam As Long, ByVal lParam As _
        Long) As Long

Private Const GWL_WNDPROC = (-4&amp;)
Private Const WM_LBUTTONDOWN As Long = &amp;H201

Dim PrevWndProc&amp;

Public Sub Init(hWnd As Long)
    PrevWndProc = SetWindowLong(hWnd, GWL_WNDPROC, _
            AddressOf SubWndProc)
End Sub

Public Sub Terminate(hWnd As Long)
    Call SetWindowLong(hWnd, GWL_WNDPROC, PrevWndProc)
End Sub

Private Function SubWndProc(ByVal hWnd As Long, _
            ByVal Msg As Long, _
            ByVal wParam As Long, _
            ByVal lParam As Long) As Long

    if Msg = WM_LBUTTONDOWN then
       call MsgBox(&quot;MouseDown&quot;)
    End if

    SubWndProc = CallWindowProc(PrevWndProc, hWnd, Msg, _
            wParam, lParam)
End Function
</code></pre>
<p>Ganz klar was das hier bedeutet, mit Init initialisiere ich das hook, mit Terminate aktiviere ich wieder das alte und mit SubWndProc prüfe ich die Nachrichten. In diesem Falle wir bei einem Mousedown auf das Fenster eine Meldung ausgegeben.</p>
<p>Wie kann ich den dies mit c++ programmieren! Habe schon probiert es genauso nachzubauen. Aber das funktioniert nicht!</p>
<p>Gruß Ronny</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/55192/hook-setzen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 02 Jun 2026 00:23:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/55192.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 14 Nov 2003 10:41:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hook setzen on Fri, 14 Nov 2003 10:41:22 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bekomme das einfach nicht hin in c++. Unter VB läufts einwandfrei!<br />
Kann mir jemmand sagen wie ich das in c++ hinbekomme ?</p>
<pre><code class="language-cpp">Option Explicit

Private Declare Function SetWindowLong Lib &quot;user32&quot; _
        Alias &quot;SetWindowLongA&quot; (ByVal hWnd As Long, _
        ByVal nIndex As Long, ByVal dwNewLong As Long) _
        As Long

Private Declare Function CallWindowProc Lib &quot;user32&quot; _
        Alias &quot;CallWindowProcA&quot; (ByVal lpPrevWndFunc _
        As Long, ByVal hWnd As Long, ByVal Msg As _
        Long, ByVal wParam As Long, ByVal lParam As _
        Long) As Long

Private Const GWL_WNDPROC = (-4&amp;)
Private Const WM_LBUTTONDOWN As Long = &amp;H201

Dim PrevWndProc&amp;

Public Sub Init(hWnd As Long)
    PrevWndProc = SetWindowLong(hWnd, GWL_WNDPROC, _
            AddressOf SubWndProc)
End Sub

Public Sub Terminate(hWnd As Long)
    Call SetWindowLong(hWnd, GWL_WNDPROC, PrevWndProc)
End Sub

Private Function SubWndProc(ByVal hWnd As Long, _
            ByVal Msg As Long, _
            ByVal wParam As Long, _
            ByVal lParam As Long) As Long

    if Msg = WM_LBUTTONDOWN then
       call MsgBox(&quot;MouseDown&quot;)
    End if

    SubWndProc = CallWindowProc(PrevWndProc, hWnd, Msg, _
            wParam, lParam)
End Function
</code></pre>
<p>Ganz klar was das hier bedeutet, mit Init initialisiere ich das hook, mit Terminate aktiviere ich wieder das alte und mit SubWndProc prüfe ich die Nachrichten. In diesem Falle wir bei einem Mousedown auf das Fenster eine Meldung ausgegeben.</p>
<p>Wie kann ich den dies mit c++ programmieren! Habe schon probiert es genauso nachzubauen. Aber das funktioniert nicht!</p>
<p>Gruß Ronny</p>
]]></description><link>https://www.c-plusplus.net/forum/post/393908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/393908</guid><dc:creator><![CDATA[Ronny W]]></dc:creator><pubDate>Fri, 14 Nov 2003 10:41:22 GMT</pubDate></item><item><title><![CDATA[Reply to Hook setzen on Fri, 14 Nov 2003 10:46:41 GMT]]></title><description><![CDATA[<p>Schau mal bei codeguru, da gibts ein gutes beispielprojekt.</p>
<p>Devil</p>
]]></description><link>https://www.c-plusplus.net/forum/post/393914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/393914</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Fri, 14 Nov 2003 10:46:41 GMT</pubDate></item><item><title><![CDATA[Reply to Hook setzen on Fri, 14 Nov 2003 13:14:27 GMT]]></title><description><![CDATA[<p>das ist kein Hook, in deinem Beispiel tauschst du die Fenster Prozedur nur aus - sogennantes Control Subclassing, außerdem warum erröffnest du denn zwei Threads? Reicht einer nicht? <a href="http://www.c-plusplus.net/forum/viewtopic.php?t=55193" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic.php?t=55193</a> ist ja auch von dir.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/394035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/394035</guid><dc:creator><![CDATA[Shlo]]></dc:creator><pubDate>Fri, 14 Nov 2003 13:14:27 GMT</pubDate></item></channel></rss>