SendMessage和Findwindow用法

原创 2006年06月03日 11:48:00

1。SendMessage和Findwindow用法:发送方 以下是VB代码:

Imports System.Runtime.InteropServices
Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "

    Public Sub New()
        MyBase.New()

        '该调用是 Windows 窗体设计器所必需的。
        InitializeComponent()

        '在 InitializeComponent() 调用之后添加任何初始化

    End Sub

    '窗体重写 dispose 以清理组件列表。
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Windows 窗体设计器所必需的
    Private components As System.ComponentModel.IContainer

    '注意: 以下过程是 Windows 窗体设计器所必需的
    '可以使用 Windows 窗体设计器修改此过程。
    '不要使用代码编辑器修改它。
    Friend WithEvents Button1 As System.Windows.Forms.Button
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.Button1 = New System.Windows.Forms.Button
        Me.SuspendLayout()
        '
        'Button1
        '
        Me.Button1.Location = New System.Drawing.Point(435, 349)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(85, 24)
        Me.Button1.TabIndex = 0
        Me.Button1.Text = "Button1"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
        Me.ClientSize = New System.Drawing.Size(549, 388)
        Me.Controls.Add(Me.Button1)
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)

    End Sub

#End Region
    '以下是C#中声明方法:
    '   [DllImport("user32.dll")]
    'public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

    '[DllImport("user32.dll")]
    'public static extern IntPtr FindWindowEx(IntPtr hwndParent,IntPtr hwndChildAfter,string lpszClass,string lpszWindow);

    '[DllImport("user32.dll",CharSet=CharSet.Unicode)] 
    'public static extern IntPtr PostMessage(IntPtr hwnd,int wMsg,IntPtr wParam,IntPtr lParam);


    <DllImport("user32.dll", CharSet:=CharSet.Unicode, entrypoint:="FindWindow")> _
    Public Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As Integer

    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a As Integer = FindWindow(Nothing, "SendMessage2")
        Dim ptr As IntPtr = Marshal.StringToHGlobalUni("Are you ok?")
        SendMessage(a, &H400, ptr, 0)
        Marshal.FreeHGlobal(ptr)

    End Sub
    <DllImport("user32.dll", CharSet:=CharSet.Unicode, entrypoint:="SendMessageW")> _
   Public Shared Function SendMessage(ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As IntPtr, ByVal lParam As Integer) As Integer

    End Function

End Class

2。SendMessage和Findwindow用法:接收方

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "

    Public Sub New()
        MyBase.New()

        '该调用是 Windows 窗体设计器所必需的。
        InitializeComponent()

        '在 InitializeComponent() 调用之后添加任何初始化

    End Sub

    '窗体重写 dispose 以清理组件列表。
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Windows 窗体设计器所必需的
    Private components As System.ComponentModel.IContainer

    '注意: 以下过程是 Windows 窗体设计器所必需的
    '可以使用 Windows 窗体设计器修改此过程。
    '不要使用代码编辑器修改它。
    Friend WithEvents Button1 As System.Windows.Forms.Button
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.Button1 = New System.Windows.Forms.Button
        Me.SuspendLayout()
        '
        'Button1
        '
        Me.Button1.Location = New System.Drawing.Point(194, 201)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(72, 23)
        Me.Button1.TabIndex = 0
        Me.Button1.Text = "Button1"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
        Me.ClientSize = New System.Drawing.Size(292, 273)
        Me.Controls.Add(Me.Button1)
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    End Sub
    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        If m.Msg = &H400 Then
            MessageBox.Show(System.Runtime.InteropServices.Marshal.PtrToStringUni(m.WParam))
        Else
            MyBase.WndProc(m)
        End If
    End Sub
End Class

MFC的SendMessage函数详解

SendMessage函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队...
  • piaopiaopiaopiaopiao
  • piaopiaopiaopiaopiao
  • 2014年06月22日 14:28
  • 5681

Unity3D中的SendMessage使用(消息推送)

简单介绍了Unity中的三个消息推送函数:SendMessage、SendMessageUpwards、BroadcastMessage...
  • liulong1567
  • liulong1567
  • 2015年06月11日 22:55
  • 12980

C#中使用SendMessage在进程间传递数据的实例

1 新建解决方案SendMessageExample 在解决方案下面新建三个项目:CopyDataStruct,Receiver和Sender。 其中,CopyDataStruct项目的输出类型为“类...
  • tiana0
  • tiana0
  • 2014年03月01日 16:51
  • 6177

Windows通过FindWindow控制其他程序的窗口

如上代码所示通过调用windows的系统函数FindWindow
  • piaopiaolanghua
  • piaopiaolanghua
  • 2014年09月15日 10:04
  • 2157

如何利用Python和win32编程避免重复性体力劳动(一)——开始、FindWindow和FindWindowEx

本系列文章假设各位看官对python是足够熟悉的,但却不太了解win32编程。 嘛。。其实我也没学过win32编程,脸请各位看官随意招呼。 需求:最近因为做课题,要把800个FaceGen软件生成的三...
  • seele52
  • seele52
  • 2013年12月23日 15:06
  • 13757

关于Unity3D中的UnitySendMessage方法的使用!!!

UnitySendMessage这个方法相信很少朋友注意到它的使用,因为根本就无法在unity编辑时使用,但是它有一个神奇的地方就是可以完成dllimport的方法回调时使用,这样说好像有些抽象,我可...
  • u011285268
  • u011285268
  • 2013年07月03日 10:29
  • 3738

MFC中SendMessage和PostMessage两种发送消息用法

前一段时间做项目,用到消息响应机制,为了记忆,特发与此!待事件充裕之时再进行整理。 1.可通过SendMessage或PostMessage发送消息; SendMessage是发送消息之后待消息响应执...
  • weiwei_c
  • weiwei_c
  • 2013年03月30日 00:20
  • 6092

C# 查找窗口,FindWindow用法

FindWindow 用来根据类名和窗口名来得到窗口句柄的。但是这个函数不能查找子窗口,也不区分大小写。 如果要从一个窗口的子窗口中查找需要使用FindWindowEX。   函数功...
  • tpstu
  • tpstu
  • 2015年03月23日 17:31
  • 658

FindWindow寻找窗口列表中第一个符合指定条件的顶级窗口

FindWindow VB声明 Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName A...
  • hutao1101175783
  • hutao1101175783
  • 2013年08月23日 21:57
  • 1580

递归方式+FindWindow 遍历窗口句柄。查找已知句柄下的所有句柄。按节点方式保存

初入门,碍于使用句柄时遇到问题,便写的遍历句柄只法
  • ailong91
  • ailong91
  • 2017年03月11日 17:57
  • 637
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SendMessage和Findwindow用法
举报原因:
原因补充:

(最多只允许输入30个字)