C#后台模拟按键问题。调用了API SendMessage

aimsam 2011-10-07 09:12:47
想做一个后台模拟按键的例子。
查到是用这个API SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);


这个有4个参数,其中第二个参数是按键的宏定义,请问这个参数对应的十六进制数去哪里找?
然后再请稍微解释一下后两个参数的意思吧。。谢谢了
...全文
1271 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuwencan 2011-10-07
  • 打赏
  • 举报
回复
你直接看这个链接:http://baike.baidu.com/view/1080187.htm
xuwencan 2011-10-07
  • 打赏
  • 举报
回复
举例说明
  ------------- C# -------------   一、API   命名空间   using System.Runtime.InteropServices;   函数原型   [DllImport("user32.dll ", EntryPoint = "SendMessage ")]   static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, string lParam);   二、CLT   命名空间   Microsoft.WindowsCE.Forms   函数语法   public static void SendMessage( ref Message m )   用法示例   Message msg = Message.Create(MsgWin.Hwnd,   MsgWindow.WM_CUSTOMMSG,   (IntPtr)e.X,   (IntPtr)e.Y);   MessageWindow.SendMessage(ref msg);   ------------- VB -------------   Private Declare Function SendMessage Lib "user32" Alias _   "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal _   wParam As Long, lParam As Any) As Long   Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _   (ByVal lpClassName As String, _   ByVal lpWindowName As String _   ) As Long   Private Const WM_close = 16   Private Sub Command1_Click()   Dim winHwnd As Long   Dim lngRetVal As Long   winHwnd = FindWindow("IEFrame", vbNullString)   Debug.Print winHwnd   If winHwnd <> 0 Then   RetVal = SendMessage(winHwnd, WM_close, 0&, 0&)   Else   MsgBox "IE没有运行。"   End If   End Sub   ------------- C++ -----------------   #include "windows.h"   int main(int argc, char* argv[])   {   HWND hWnd = ::FindWindow(NULL,"QQ2010");   if( hWnd != NULL)   {   ::SendMessage(hWnd,WM_CLOSE,0,0);   }   return 0;   }
xuwencan 2011-10-07
  • 打赏
  • 举报
回复
函数功能
  该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。
编辑本段函数原型
  LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);   参数:   hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。   Msg:指定被发送的消息。   wParam:指定附加的消息特定信息。   IParam:指定附加的消息特定信息。   返回值:返回值指定消息处理的结果,依赖于所发送的消息。   备注:需要用HWND_BROADCAST通信的应用程序应当使用函数RegisterWindowMessage来为应用程序间的通信取得一个唯一的消息。   如果指定的窗口是由正在调用的线程创建的,则窗口程序立即作为子程序调用。如果指定的窗口是由不同线程创建的,则系统切换到该线程并调用恰当的窗口程序。线程间的消息只有在线程执行消息检索代码时才被处理。发送线程被阻塞直到接收线程处理完消息为止。   Windows CE:Windows CE不支持Windows桌面平台支持的所有消息。使用SendMesssge之前,要检查发送的消息是否被支持。   速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。   SendMessage函数使用实例   程序控制拉下或收起组合框的下拉列来   一般情况下,为了拉下或收起组合框的下拉列表,需要用键盘或鼠标进行操作,而有时我们希望程序运行的某个时刻自动拉出下拉列表(比如在一些演示程序中),为了实现这个目的,我们也只有借助于SendMessage函数,方法是发一个CB_SHOWDROPDOWN(&H14F)消息给组合框。   在发CB_SHOWDROPDOWN消息时,wParam参数决定了是拉下列表(=True时)还是收起列表(=False时),lParam无用(设为0)。

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧