sendmessage

C# sendmessageusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

const int WM_SETTEXT = 0x000C;

[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);

private void button1_Click(object sender, EventArgs e)
{
SendMessage(this.textBox1.Handle,WM_SETTEXT,(IntPtr)0,"A");
}
}
}

sendMessage 例子#include "windows.h"
///////////////////////////////////////
int main(int argc, char* argv[])
{
HWND hWnd;
LPCTSTR str ="掃雷";
hWnd=::FindWindow(NULL,"Microsoft 網上紅心大戰");
if(hWnd)
::SendMessage(hWnd,WM_SETTEXT,0,(long )str );
printf("Hello World!\n");
return 0;
}
//打開紅心大戰 , 運行程序,把紅心大戰標題改為掃雷

C# SendMessage 問題,高手來,謝謝關鍵是你的系統要用PoseMessage這個
B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
轉C#用SHARP定義就OK,可提交回車

SendMessageOption Explicit
Private Const WM_SETTEXT = &HC
Private Declare Function SendMessage& Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Private Sub Command1_Click()
Dim a As String '應該是這里的問題
a = "abc"
SendMessage ByVal Text1.hwnd, ByVal WM_SETTEXT, ByVal 0, ByVal a
End Sub

C# SendMessage 問題,給個用這個函數
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

就可以了,樓上的只是個說明

sendmessage與postmessage有什么區別看時間過去好久了 。樓上都說的很好了,再給你形象的解釋下,為后來人解讀下把 。。

PostMessage 和SendMessage的區別主要在于是否等待其他程序消息處理 。
PostMessage只是把消息放入隊列,不管其他程序是否處理都返回,然后繼續執行;
而SendMessage必須等待其他程序處理消息后才返回,繼續執行 。
這兩個函數的返回值也不同,PostMessage的返回值表示PostMessage函數執行是否正確----BOOL,
而SendMessage的返回值表示其他程序處理消息后的返回值---LRESULT 。

PostMessage 是將消息發送到窗口的消息隊列中,然后立即返回
SendMessage是將消息發送到窗口函數,在窗口函數處理完消息后才返回 。所以,PostMessage 是異步處理,而SendMessage是同步處理

先來看看Send與Post這兩個英文單詞的意思:Send有發送的意思,而Post具有投寄的意思 。
聯想一下現實生活中我們寫信(很久很久以前 。。。。)來記就很簡單了:
Send: 相當于郵寄員,他會將快件親手交給收件人,并且需要收件人簽字,他才閃人 。而在消息機制中 , 就是說,系統(郵寄員)會將收到的消息(郵局分發)直接發送到某個窗口的窗口過程(收件人),并且需要該窗口作出處理(收件人簽字)才返回 。這東東就是SendMessage
Post: 相當于郵局、郵筒等等 , 我們寫好信好,會將信交給郵局 , 或投寄到郵筒里 , 而什么時候發送 , 發送到哪里都由郵局來處理 , 我們投寄信件的時候 , 是不會等候這封信件到達收件人手里,然后才回家的 。而在消息機制中,就是說,系統(我們)將收到的消息(信件)投寄到應用程序的消息循環(相當于郵筒)中,然后就閃人,具體啥時候處理這條消息(啥時候發送郵件),那就得看“辦事效率”了 。
區別很明顯,SendMessage的消息是不進隊列的,而PostMessage的需要排隊 。
但,值得說明的是:雖然一個要進隊,一個不進隊,但是最終處理消息的地方都一樣:都是系統調用窗口過程進行處理(收件人作出反應)

PostMessage和SendMessage有什么區別其實你在網上搜索一下就可以找到很多答案!難道網上的回答都滿足不了你 , 那你指望我們就能讓你理解嗎?

我把我的理解說一下,希望你懂 。
1.SendMessage你就把他理解為調用窗口過程函數即可 。
LRESULT CALLBACK WindowProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
這個好懂吧!把他們等同即可,SendMessage就是 調用WindowProc,SendMessage的返回值就是WindowProc的返回值 。

2 。PostMessage就比較麻煩 。
PostMessage后 , 系統會把消息放在程序的消息隊列 。
之后消息循環(這個在win32程序經常看到的)
While(GetMessage( 。。。。))

。。。。
DispatchMessage( 。。。);


GetMessage會獲取到這個消息 。
(對于很多初學者來說這個GetMessage確實不要理解,
因為它跟我們平常的程序代碼執行思想很不同 。
Getmessage有時會堵塞,程序會停在那里 。
它什么時候被調用,誰調用它呢?--其實這都是系統的事 , 
系統發現程序的消息隊列有消息了,就會讓你的程序調用
Getmessage,把消息取出來,while循環繼續執行,到
DispatchMessage時就可以把它等同于調用窗口過程函數
WindowProc了 。

整理一下思路就是:
PostMessage=
消息進入消息隊列-》GetMessage把消息取出來-》程序執行到DispatchMessage-》DispatchMessage就相當于調用窗口過程函數了

所以2個函數最后都會去調用窗口過程函數,只是PostMessage調用前要經歷一些“曲折”的步驟 。

sendmessage和postmessage的區別具體的參數情況就不為摟住列舉了,相信樓主已經查過msdn.
說說區別
PostMessage只負責將消息放到消息隊列中,不確定何時及是否處理
SendMessage要等到受到消息處理的返回碼(DWord類型)后才繼續
PostMessage執行后馬上返回
SendMessage必須等到消息被處理后才會返回 。

PostMessage和SendMessage有什么區別?在控制別的應用程序的時候,經常需要等待直到某個功能結束,例如:打開一個窗口-->等待直到窗口結束這個時候就可以用到SendMessage如果在打開這個窗口后仍然需要對該窗口的界面進行設置 , 比如Edit的value等等,比如:打開一個窗口-->控制窗口的control的屬性這個時候就需要PostMessage使用一個鉤子程序截獲消息后,使用SendMessage把消息發送到主處理程序進行處理,但是在主處理程序還沒有完成任務的時候,被設置鉤子的程序進入了停止的狀態,不可以處理WM_PAINT,WM_MOVE,.......等的基本信息,必須要等SendMessage發送出的消息完成后,才能繼續運行,整個界面一片空白,把鉤子消息設置成PostMessage的發送消息形式后,問題解決!我查了MSDN對這兩個API的定義,PostMessage只是把消息放入隊列,不管其他程序是否處理都返回,然后繼續執行;而SendMessage必須等待其他程序處理消息后才返回 , 繼續執行 。PostMessage的返回值表示PostMessage函數執行是否正確;而SendMessage的返回值表示其他程序處理消息后的返回值 。使用這兩個發送消息函數的最重要的是要看你的程序是否要對消息的滯后性關注否,PostMessage會造成消息的滯后性,而SendMessage則不會,但如果SendMessage消息處理失敗,則會造成程序停止!

PostMessage()和SendMessage()有什么不同?SendMessage()向窗口發送消息后,必須等窗口處理完消息并返回值后才結束運行;而PostMessage()是把消息發送到窗口的消息隊列中,不管該消息是否已處理都立即返回 。
這也是所謂同步運行和異步運行的區別 。

vb中sendmessage函數的用法sendmessage函數
函數功能:該函數將指定的消息發送到一個或多個窗口 。此函數為指定的窗口調用窗口程序,直到窗口程序處理完消息再返回 。而函數PostMessage不同,將一個消息寄送到一個線程的消息隊列后立即返回 。
函數原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam , LPARAM IParam);

參數:
hWnd:其窗口程序將接收消息的窗口的句柄 。如果此參數為HWND_BROADCAST,則消息將被發送到系統中所有頂層窗口,包括無效或不可見的非自身擁有的窗口、被覆蓋的窗口和彈出式窗口,但消息不被發送到子窗口 。
Msg:指定被發送的消息 。
wParam:指定附加的消息指定信息 。
IParam:指定附加的消息指定信息 。
返回值:返回值指定消息處理的結果,依賴于所發送的消息 。
備注:需要用HWND_BROADCAST通信的應用程序應當使用函數RegisterWindowMessage來為應用程序間的通信取得一個唯一的消息 。
消息分三類:標準消息,命令消息,通告消息.
標準消息通過解析Msg直接發送,命令消息通過解析標準消息的Msg獲得WM_COMMAND,再解析wParam從而獲得命令ID號消息.
如: MFC類里面封裝了窗口句柄我們可以這樣用函數,SendMessage(WM_COMMAND,ID_NAME,0);

VB中SendMessage的詳細用法!SendMessage函數功能描述:將指定的消息發送到一個或多個窗口 。此函數為指定的窗口調用窗口過程 , 直到窗口過程處理完消息后才返回 。參數:hWnd
窗口過程接收消息的窗口句柄 。iparam指定附加消息的特定信息msg指定被發送的信息 。

VB中SendMessage和postmessage的詳細用法 。SendMessage : 發送一個消息給操作系統,并且等待操作系統執行完這個消息 。postmessage: 發送一個消息給操作系統,不等待操作系統執行完這個消息就立即返回執行下一條語句 。SendMessage定義:Public Shared Sub SendMessage ( _ ByRef m As Message _ )SendMessage調用: Dim m As Message MessageWindow.SendMessage(m) postmessage定義: Public Shared Sub PostMessage ( _ ByRef m As Message _ )postmessage調用: Dim m As Message MessageWindow.PostMessage(m) 它們的定義和調用格式是一樣的,只是執行時的效果不一樣,剛才我已經說過了 。參數的m含義: 是一個windows的消息結構體,用來描述傳遞的消息 。比如: Dim msg As Microsoft.WindowsCE.Forms.Message = _ Microsoft.WindowsCE.Forms.Message.Create(MsgWin.Hwnd, _MsgWindow.WM_CUSTOMMSG, New IntPtr(e.X), New IntPtr(e.Y))MessageWindow.SendMessage(msg)MsgWin.Hwnd :表示消息的句柄 。MsgWindow.WM_CUSTOMMSG :表示消息的ID,就是一個唯一的消息的標識號,是一個整數 。IntPtr(e.X)和 New IntPtr(e.Y): 消息的兩個附加參數 , 這要根據具體的消息而論了 。

vb中SendMessage的用法??參考下面的網頁
http://hi.baidu.com/yhpp521/blog/item/b8a42634b8b15b3b5bb5f5dd.html
http://myvatican.bokee.com/1506949.html
http://search.csdn.net/search/SendMessage/6/all/

希望對你有幫助

VB 中的sendmessage的用法 高手進用API文本...把sendmessage函數插入進去!如下:
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 Const WM_CLOSE = &H10
Pirvate sub command1)Click()
SendMessage me.hwnd,WM_CLOSE,0,0
End Sub

誰有SendMessage發送的所有消息的名稱以及使用方法這幾天常用到sendmessage , 收藏代碼值,方便以后用 。

WM_NULL = 0x0000
WM_Create = 0x0001
;應用程序創建一個窗口
WM_DESTROY = 0x0002
;一個窗口被銷毀
WM_MOVE = 0x0003
;移動一個窗口
WM_SIZE = 0x0005
;改變一個窗口的大小
WM_ACTIVATE = 0x0006
;一個窗口被激活或失去激活狀態;
WM_SETFOCUS = 0x0007
;獲得焦點后
WM_KILLFOCUS = 0x0008
;失去焦點
WM_ENABLE = 0x000A
;改變enable 狀態
WM_SETREDRAW = 0x000B
;設置窗口是否能重畫
WM_SETTEXT = 0x000C
;應用程序發送此消息來設置一個窗口的文本
WM_GETTEXT = 0x000D
;應用程序發送此消息來復制對應窗口的文本到緩沖區
WM_GETTEXTLENGTH = 0x000E
;得到與一個窗口有關的文本的長度(不包含空字符)
WM_PAINT = 0x000F
;要求一個窗口重畫自己
WM_CLOSE = 0x0010
;當一個窗口或應用程序要關閉時發送一個信號
WM_QUERYENDSESSION = 0x0011
;當用戶選擇結束對話框或程序自己調用ExitWindows函數
WM_QUIT = 0x0012
;用來結束程序運行或當程序調用postquitmessage函數
WM_QUERYOPEN = 0x0013
;當用戶窗口恢復以前的大小位置時,把此消息發送給某個圖標
WM_ERASEBKGND = 0x0014
;當窗口背景必須被擦除時(例在窗口改變大小時)
WM_SYSCOLORCHANGE = 0x0015
;當系統顏色改變時,發送此消息給所有頂級窗口
WM_ENDSESSION = 0x0016
;當系統進程發出WM_QUERYENDSESSION 消息后,此消息發送給應用程序通知它對話是否結束
WM_SYSTEMERROR = 0x0017
;系統錯誤
WM_SHOWWINDOW = 0x0018
;當隱藏或顯示窗口是發送此消息給這個窗口
WM_ACTIVATEAPP = 0x001C
;發此消息給應用程序哪個窗口是激活的,哪個是非激活的;
WM_FONTCHANGE = 0x001D
;當系統的字體資源庫變化時發送此消息給所有頂級窗口
WM_TIMECHANGE = 0x001E
;當系統的時間變化時發送此消息給所有頂級窗口
WM_CANCELMODE = 0x001F
;發送此消息來取消某種正在進行的摸態(操作)
WM_SETCURSOR = 0x0020
;如果鼠標引起光標在某個窗口中移動且鼠標輸入沒有被捕獲時,就發消息給某個窗口
WM_MOUSEACTIVATE = 0x0021
;當光標在某個非激活的窗口中而用戶正按著鼠標的某個鍵發送此消息給當前窗口
WM_CHILDACTIVATE = 0x0022
;發送此消息給MDI 子窗口當用戶點擊此窗口的標題欄,或當窗口被激活 , 移動,改變大小
WM_QUEUESYNC = 0x0023
;此消息由基于計算機的訓練程序發送,通過WH_JOURNALPALYBACK的hook程序分離出用戶輸入消息
WM_GETMINMAXINFO = 0x0024
;此消息發送給窗口當它將要改變大小或位置;
WM_PAINTICON = 0x0026
;發送給最小化窗口當它圖標將要被重畫
WM_ICONERASEBKGND = 0x0027
;此消息發送給某個最小化窗口,僅當它在畫圖標前它的背景必須被重畫
WM_NEXTDLGCTL = 0x0028;
發送此消息給一個對話框程序去更改焦點位置
WM_SPOOLERSTATUS = 0x002A;
每當打印管理列隊增加或減少一條作業時發出此消息
WM_DRAWITEM = 0x002B;
WM_MEASUREITEM = 0x002C;
當button, combo box, list box, list view control, or menu item 被創建時
發送此消息給控件的所有者
WM_DeleteITEM = 0x002D;當listbox或combobox 被銷毀或當某些項被刪除通過LB_DeleteSTRING,LB_RESETCONTENT,CB_DeleteSTRING,CB_RESETCONTENT消息
WM_VKEYTOITEM = 0x002E;此消息有一個LBS_WANTKEYBOARDINPUT 風格的發出給它的所有者來響應
WM_KEYDOWN 消息
WM_CHARTOITEM = 0x002F;
此消息由一個LBS_WANTKEYBOARDINPUT 風格的列表框發送給他的所有者來
響應WM_CHAR 消息
WM_SETFONT = 0x0030;
當繪制文本時程序發送此消息得到控件要用的顏色
WM_GETFONT = 0x0031;
應用程序發送此消息得到當前控件繪制文本的字體
WM_SETHOTKEY = 0x0032;
應用程序發送此消息讓一個窗口與一個熱鍵相關連
WM_GETHOTKEY = 0x0033;
應用程序發送此消息來判斷熱鍵與某個窗口是否有關聯
WM_QUERYDRAGICON = 0x0037;
此消息發送給最小化窗口,當此窗口將要被拖放而它的類中沒有定義圖標,應用程
序能返回一個圖標或光標的句柄,當用戶拖放圖標時系統顯示這個圖標或光標
WM_COMPAREITEM = 0x0039;
發送此消息來判定combobox 或listbox 新增加的項的相對位置
WM_GETOBJECT = 0x003D;
WM_COMPACTING = 0x0041;
顯示內存已經很少了
WM_WINDOWPOSCHANGING = 0x0046;
發送此消息給那個窗口的大小和位置將要被改變時,來調用setwindowpos 函數或
其它窗口管理函數
WM_WINDOWPOSCHANGED = 0x0047;
發送此消息給那個窗口的大小和位置已經被改變時,來調用setwindowpos 函數或
其它窗口管理函數
WM_POWER = 0x0048;(適用于16 位的windows)
當系統將要進入暫停狀態時發送此消息
WM_COPYDATA = https://www.zaoxu.com/jjsh/bkdq/0x004A;
當一個應用程序傳遞數據給另一個應用程序時發送此消息
WM_CANCELJOURNAL = 0x004B;
當某個用戶取消程序日志激活狀態,提交此消息給程序
WM_NOTIFY = 0x004E;
當某個控件的某個事件已經發生或這個控件需要得到一些信息時,發送此消息給它
的父窗口
WM_INPUTLANGCHANGEREQUEST = 0x0050;
當用戶選擇某種輸入語言,或輸入語言的熱鍵改變
WM_INPUTLANGCHANGE = 0x0051;
當平臺現場已經被改變后發送此消息給受影響的最頂級窗口
WM_TCARD = 0x0052;
當程序已經初始化windows 幫助例程時發送此消息給應用程序
WM_HELP = 0x0053;
此消息顯示用戶按下了F1,如果某個菜單是激活的,就發送此消息個此窗口關聯
的菜單 , 否則就
發送給有焦點的窗口,如果當前都沒有焦點,就把此消息發送給當前激活的窗口
WM_USERCHANGED = 0x0054;
當用戶已經登入或煺出后發送此消息給所有的窗口,當用戶登入或煺出時系統更新
用戶的具體
設置信息,在用戶更新設置時系統馬上發送此消息;
WM_NOTIFYFORMAT = 0x0055;
公用控件,自定義控件和他們的父窗口通過此消息來判斷控件是使用ANSI 還是
UNICODE 結構
在WM_NOTIFY 消息,使用此控件能使某個控件與它的父控件之間進行相互通信
WM_CONTEXTMENU = 0x007B;
當用戶某個窗口中點擊了一下右鍵就發送此消息給這個窗口
WM_STYLECHANGING = 0x007C;
當調用SETWINDOWLONG 函數將要改變一個或多個 窗口的風格時發送此消息給
那個窗口
WM_STYLECHANGED = 0x007D;
當調用SETWINDOWLONG 函數一個或多個 窗口的風格后發送此消息給那個窗口
WM_DISPLAYCHANGE = 0x007E;
當顯示器的分辨率改變后發送此消息給所有的窗口
WM_GETICON = 0x007F;
此消息發送給某個窗口來返回與某個窗口有關連的大圖標或小圖標的句柄;
WM_SETICON = 0x0080;
程序發送此消息讓一個新的大圖標或小圖標與某個窗口關聯;
WM_NCCreate = 0x0081;
當某個窗口第一次被創建時,此消息在WM_Create 消息發送前發送;
WM_NCDESTROY = 0x0082;
此消息通知某個窗口,非客戶區正在銷毀
WM_NCCALCSIZE = 0x0083;
當某個窗口的客戶區域必須被核算時發送此消息
WM_NCHITTEST = 0x0084;//移動鼠標,按住或釋放鼠標時發生
WM_NCPAINT = 0x0085;
程序發送此消息給某個窗口當它(窗口)的框架必須被繪制時;
WM_NCACTIVATE = 0x0086;
此消息發送給某個窗口 僅當它的非客戶區需要被改變來顯示是激活還是非激活狀
態;
WM_GETDLGCODE = 0x0087;
發送此消息給某個與對話框程序關聯的控件,widdows 控制方位鍵和TAB 鍵使輸
入進入此控件
通過響應WM_GETDLGCODE 消息,應用程序可以把他當成一個特殊的輸入控件
并能處理它
WM_NCMOUSEMOVE = 0x00A0;
當光標在一個窗口的非客戶區內移動時發送此消息給這個窗口 //非客戶區為:窗體
的標題欄及窗
的邊框體
WM_NCLBUTTONDOWN = 0x00A1;
當光標在一個窗口的非客戶區同時按下鼠標左鍵時提交此消息
WM_NCLBUTTONUP = 0x00A2;
當用戶釋放鼠標左鍵同時光標某個窗口在非客戶區十發送此消息;
WM_NCLBUTTONDBLCLK = 0x00A3;
當用戶雙擊鼠標左鍵同時光標某個窗口在非客戶區十發送此消息
WM_NCRBUTTONDOWN = 0x00A4;
當用戶按下鼠標右鍵同時光標又在窗口的非客戶區時發送此消息
WM_NCRBUTTONUP = 0x00A5;
當用戶釋放鼠標右鍵同時光標又在窗口的非客戶區時發送此消息
WM_NCRBUTTONDBLCLK = 0x00A6;
當用戶雙擊鼠標右鍵同時光標某個窗口在非客戶區十發送此消息
WM_NCMBUTTONDOWN = 0x00A7;
當用戶按下鼠標中鍵同時光標又在窗口的非客戶區時發送此消息
WM_NCMBUTTONUP = 0x00A8;
當用戶釋放鼠標中鍵同時光標又在窗口的非客戶區時發送此消息
WM_NCMBUTTONDBLCLK = 0x00A9;
當用戶雙擊鼠標中鍵同時光標又在窗口的非客戶區時發送此消息
WM_KEYFIRST = 0x0100;
WM_KEYDOWN = 0x0100;
//按下一個鍵
WM_KEYUP = 0x0101;
//釋放一個鍵
WM_CHAR = 0x0102;
//按下某鍵,并已發出WM_KEYDOWN,WM_KEYUP 消息
WM_DEADCHAR = 0x0103;
當用translatemessage 函數翻譯WM_KEYUP 消息時發送此消息給擁有焦點的窗口
WM_SYSKEYDOWN = 0x0104;
當用戶按住ALT 鍵同時按下其它鍵時提交此消息給擁有焦點的窗口;
WM_SYSKEYUP = 0x0105;
當用戶釋放一個鍵同時ALT 鍵還按著時提交此消息給擁有焦點的窗口
WM_SYSCHAR = 0x0106;
當WM_SYSKEYDOWN 消息被TRANSLATEMESSAGE 函數翻譯后提交此消息給
擁有焦點的窗口
WM_SYSDEADCHAR = 0x0107;
當WM_SYSKEYDOWN 消息被TRANSLATEMESSAGE 函數翻譯后發送此消息給
擁有焦點的窗口
WM_KEYLAST = 0x0108;
WM_INITDIALOG = 0x0110;
在一個對話框程序被顯示前發送此消息給它,通常用此消息初始化控件和執行其它
任務
WM_COMMAND = 0x0111;
當用戶選擇一條菜單命令項或當某個控件發送一條消息給它的父窗口,一個快捷鍵
被翻譯
WM_SYSCOMMAND = 0x0112;
當用戶選擇窗口菜單的一條命令或當用戶選擇最大化或最小化時那個窗口會收到此
消息
WM_TIMER = 0x0113; //發生了定時器事件
WM_HSCROLL = 0x0114;
當一個窗口標準水平滾動條產生一個滾動事件時發送此消息給那個窗口,也發送給
擁有它的控件
WM_VSCROLL = 0x0115;
當一個窗口標準垂直滾動條產生一個滾動事件時發送此消息給那個窗口也,發送給
擁有它的控件 WM_INITMENU = 0x0116;
當一個菜單將要被激活時發送此消息,它發生在用戶菜單條中的某項或按下某個菜
單鍵 , 它允許程序在顯示前更改菜單
WM_INITMENUPOPUP = 0x0117;
當一個下拉菜單或子菜單將要被激活時發送此消息,它允許程序在它顯示前更改菜
單 , 而不要改變全部
WM_MENUSelect = 0x011F;
當用戶選擇一條菜單項時發送此消息給菜單的所有者(一般是窗口)
WM_MENUCHAR = 0x0120;
當菜單已被激活用戶按下了某個鍵(不同于加速鍵),發送此消息給菜單的所有
者;
WM_ENTERIDLE = 0x0121;
當一個模態對話框或菜單進入空載狀態時發送此消息給它的所有者,一個模態對話
框或菜單進入空載狀態就是在處理完一條或幾條先前的消息后沒有消息它的列隊中
等待
WM_MENURBUTTONUP = 0x0122;
WM_MENUDRAG = 0x0123;
WM_MENUGETOBJECT = 0x0124;
WM_UNINITMENUPOPUP = 0x0125;
WM_MENUCOMMAND = 0x0126;
WM_CHANGEUISTATE = 0x0127;
WM_UpdateUISTATE = 0x0128;
WM_QUERYUISTATE = 0x0129;

SendMessage發消息,怎樣用PeekMessage接收>HWND hwnd=::FindWindow(0,"wang");
>::PeekMessage(&msg,hwnd,0,0,PM_REMOVE);
如果hwnd是其他線程的窗口 , PeekMessage是不會成功的 。

如果要處理其他進程發過來的消息 , 不用調用PeekMessage,直接對那個消息加入處理即可 。系統會自動獲取消息并調用你的處理函數 。

如何將系統消息作為SendMessage來發送?編輯詞條SendMessage()
函數功能:該函數將指定的消息發送到一個或多個窗口 。此函數為指定的窗口調用窗口程序 , 直到窗口程序處理完消息再返回 。而函數PostMessage不同,將一個消息寄送到一個線程的消息隊列后立即返回 。
函數原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);
參數:
hWnd:其窗口程序將接收消息的窗口的句柄 。如果此參數為HWND_BROADCAST,則消息將被發送到系統中所有頂層窗口,包括無效或不可見的非自身擁有的窗口、被覆蓋的窗口和彈出式窗口,但消息不被發送到子窗口 。
Msg:指定被發送的消息 。
wParam:指定附加的消息指定信息 。
IParam:指定附加的消息指定信息 。
返回值:返回值指定消息處理的結果,依賴于所發送的消息 。
備注:需要用HWND_BROADCAST通信的應用程序應當使用函數RegisterWindowMessage來為應用程序間的通信取得一個唯一的消息 。

我想用SendMessage來發送字符串 , 怎么辦首先說怎么發送,然后說怎么接收:
自己定義一個消息,加上一個消息響應函數 。然后用SendMessage把字符串的地址發過去 。
比如VC環境:
在stdafx.h中,
#define MY_MESSAGE USER+1

定義一個函數用來發送,可以是定時器,可以是按鈕 。
void send()
{
CString str;
str = "12345";
::SendMessage(hWnd,MY_MESSAGE ,(WPARAM)&str);
}
在你的類頭文件.h中:
afx_msg void MyFunction(WPARAM wParam,LPARAM lParam);

在.cpp中
BEGIN_MESSAGE_MAP下面加入:
ON_MESSAGE(MY_MESSAGE ,MyFunction)

在后面加上你的函數體
void 你的類名::MyFunction(WPARAM wParam,LPARAM lParam)
{
//如果你發送的字符串的地址在WPARAM中,則用WPARAM來接收
CString* pStr = (CString*)wParam.
AfxMessageBox(*pStr);
}

你要注意的是:這只能適合SendMessage,如果你要使用PostMessage,就要把你發送的字符串設定為類的成員 , 或者全局的,不能是臨時變量 。因為SendMessage是要讓消息響應函數執行完了才會返回,所以str是不會被系統釋放的 。PostMessage是直接返回 , 于是你傳了一個str的地址過去 , 但是消息響應函數執行的時候,str已經被刪除了 , 這個時候的地址是一個不可知的內容,程序就會發生內存泄露,所以還是推薦你定義一個字符串專門用來發送 。

我想用SendMessage來發送字符串,怎么辦發送 :

COPYDATASTRUCT cds;

AnsiString Data=https://www.zaoxu.com/jjsh/bkdq/Edit2->Text;//"Just a test";

cds.dwData=https://www.zaoxu.com/jjsh/bkdq/sizeof(COPYDATASTRUCT);
cds.cbData=https://www.zaoxu.com/jjsh/bkdq/Data.Length();
cds.lpData=https://www.zaoxu.com/jjsh/bkdq/(LPVOID)Data.c_str();

//想目標窗口發消息WM_COPYDATA
SendMessage((HWND)Edit1->Text.ToInt(),WM_COPYDATA,(WPARAM)NULL,(LPARAM)&cds);

接收:

if(Message.Msg==WM_COPYDATA)
{
COPYDATASTRUCT *cds;
char* DataBuf;

cds=(COPYDATASTRUCT*)Message.LParam;
DataBuf=new char[cds->cbData];
CopyMemory(DataBuf,cds->lpData,cds->cbData);

AnsiString Str=AnsiString(DataBuf);
Memo1->Lines->Add("Str="+Str);

delete[] DataBuf;
}

我已經得到窗口上句按鍵的句柄,怎么用SENDMESSAGE,發送回車,賜教如果是一個按鈕的話,那么直接發送一個點擊的消息即可:
SendMessage(hWnd, BM_CLICK, 0, 0);
如果一定要發送 Enter 消息,可以這樣:
SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);
SendMessage(hWnd, WM_KEYUP, VK_RETURN, 0);
hWnd 代表按鈕的句柄 。

sendmessage C# 鼠標點擊WM_LBUTTONDOWN和WM_LBUTTONUP是sdk種定義的常量,c/c++專用 , 所以你得自己重定義
從網上粘來的,參考下
public enum WMessages : int
{
WM_LBUTTONDOWN = 0x201, //Left mousebutton down
WM_LBUTTONUP = 0x202,//Left mousebutton up
WM_LBUTTONDBLCLK = 0x203, //Left mousebutton doubleclick
WM_RBUTTONDOWN = 0x204, //Right mousebutton down
WM_RBUTTONUP = 0x205,//Right mousebutton up
WM_RBUTTONDBLCLK = 0x206, //Right mousebutton doubleclick
WM_KEYDOWN = 0x100,//Key down
WM_KEYUP = 0x101,//Key up
}

如何用SENDMESSAGE發送組合鍵如CTRL+A如果是系統級的擊鍵就再用WM_SYSKEYDOWN或者WM_SYSKEYUP試試看.
另外,我記得WM_KEYDOWN的LPARAM也不應該是0,不過記不大清楚了,查API幫助應該有更詳細的信息.

好像偶也試過,SendMessage和PostMessage有點不大盡如人意,但是你可以試一下
VKKeyScan和MapVirtualKey來獲得要發送的按鍵的掃描碼和虛擬鍵值,這兩個值
在SendMessage和PostMessage中分別對應wparam和lparam,當然還要經過移位和
KeyUp,KeyDown的Mask,好像可以通過發送四個消息來模擬Ctrl+A.
另外我覺得kbd_event這個API比較合適用來發送模擬按鍵,唯一的缺點是他只能向
當前最前的活動窗口發送消息.

SendMessage(handle, WM_CHAR, aChar, aKeyData)
aChar = "A"
aKeyData = https://www.zaoxu.com/jjsh/bkdq/32位
1-15位表示發送幾遍,
16-23表示ALT、CTRL、NUM、CAPS等(具體何值忘了),
24位表示是左ALT、CTRL還是右ALT、CTRL(通常為0) , 
25-28位保留
30位表示上一個鍵的狀態KEY DOWN OR UP , 1為發送前的DWON狀態,0為UP
31位表示:0表示鍵開始按下,1為開始釋放 。
從要求看:aKeyData為: 0000 0000 xxxx xxxx 0000 0000
其中xxxx xxxx放CTRL的掃描碼,具體忘了,請自己查一下 。

VC SendMessage發送鼠標按鍵消息(指定坐標)怎么寫當你按下了鍵盤或鼠標時(左或右鍵),其實就發生了一個WM_CHAR消息,假設是左鍵,代碼如下:
//窗口過程函數

LRESULT CALLBACK WindowProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch(uMsg)
{

case WM_LBUTTONDOWN:
MessageBox(hwnd,"left mouse clicked","提示",0);//輸出“左鍵被按下”
HWND hwnd;//定義窗口句柄
HDC hdc;//定義一個實體句柄
hdc=GetDC(hwnd);//得到實體句柄,因為你程序最終要\//使文本放置到何位置,是和窗口發\
//生關系,所以要得到窗口句bing
TextOut(hdc,0,0,"文本放置位置",strlen("文本放置位置"));//輸出文本的起始位置(x和y的\
//坐標,這里假設為 屏幕原點\
//: 0,0)
ReleaseDC(hwnd,hdc);//釋放DC,因為DC是系統維護的一個數據結構,要占據內存 , \
//如果不釋放,就會造成內存泄露
break;
case 2:
......
break;
case 3:
......
break;
default:
return DefwindowProc(hwnd,uMsg,wPara,lParam);//返回缺省的窗口處理過程
}
return 0;
}

C++怎么發送某個按鍵的消息SendMessagePlatform SDK的函數原型似乎該是這樣
LRESULT SendMessage(
HWND hWnd,// handle to destination window
UINT Msg,// message
WPARAM wParam,// first message parameter
LPARAM lParam// second message parameter
);
而且,發送按鍵值一般用 WM_CHAR 捕獲后在窗口過程函數中處理
個人見解^_^

SendMessage參數個數究竟是三個還是四個很多語言都有 SendMessage 。參數有多有少 。
有些語言有 重名函數,即同樣的 函數名字,但 形式參數個數不同,例如 可以 3個 也 可以 4個 。當 實際參數 給 3 個 時,就 調用形參為 3個 的 同名函數,實際參數 給 4 個 時 , 就 調用形參為 4個 的 同名函數 。
參考 百度百科:
http://baike.baidu.com/item/SendMessage/6374103

SendMessage函數是干什么用的?有哪些參數?是向一個指定的窗口發送一條指定的消息
它有4個參數
第一個,是指定的窗口的句柄,這個窗口是廣義上的,也就是說包括各種控件,對話框 。它指明你到底要向誰發送消息
第二個 , 是具體的消息 , 你要向這個窗口發送一條什么樣的消息,要在這說明,消息是由微軟給定義好的以WM_開頭 , 比如WM_SETFOCUS設置輸入焦點 。有很多,你可以查看MSDN
第三個和第四個參數,這兩個和第二個參數有關,它們都是消息的附加參數,具體是什么類型的要看消息是什么 , MSDN中對每個消息的附加參數都寫的很明確 。
比如WM_GETTEXT該消息用于獲取窗口中的內容 。它的附加參數,一個是字符數組,用于接收這個文本 。一個是接收文本的大?。偃緇袢〉奈謀境飧鮒稻蛻崞?。
還有很多你可以看看MSDN

SendMessage函數是干什么用的 它有哪些參數是向一個指定的窗口發送一條指定的消息
它有4個參數
第一個,是指定的窗口的句柄,這個窗口是廣義上的,也就是說包括各種控件,對話框 。它指明你到底要向誰發送消息
第二個,是具體的消息,你要向這個窗口發送一條什么樣的消息,要在這說明 , 消息是由微軟給定義好的以WM_開頭,比如WM_SETFOCUS設置輸入焦點 。有很多 , 你可以查看MSDN
第三個和第四個參數 , 這兩個和第二個參數有關,它們都是消息的附加參數,具體是什么類型的要看消息是什么,MSDN中對每個消息的附加參數都寫的很明確 。
比如WM_GETTEXT該消息用于獲取窗口中的內容 。它的附加參數 , 一個是字符數組,用于接收這個文本 。一個是接收文本的大小,假如獲取的文本超過這個值就舍棄 。
還有很多你可以看看MSDN

誰能詳細講講Send()函數各參數的意義函數原型int send( SOCKET s,const char FAR *buf,int len,int flags );不論是客戶還是服務器應用程序都用send函數來向TCP連接的另一端發送數據 。客戶程序一般用send函數向服務器發送請求,而服務器則通常用send函數來向客戶程序發送應答 。該函數的第一個參數指定發送端套接字描述符;第二個參數指明一個存放應用程序要發送數據的緩沖區;第三個參數指明實際要發送的數據的字節數;第四個參數一般置0 。(可在MSDN上查看其具體含義)

SendMessage()函數的 第二、三、四個參數是什么 怎么用LRESULT SendMessage(
HWND hWnd,// handle of destination window
UINT Msg,// message to send
WPARAM wParam,// first message parameter
LPARAM lParam// second message parameter
);
hWnd
Handle to the window whose window procedure will receive the message. If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows; but the message is not sent to child windows.
Msg
Specifies the message to be sent.
wParam
Specifies additional message-specific information.
lParam
Specifies additional message-specific information.

python用sendmessage函數向其他程序的編輯框(當前激活窗口,并且在活動光標處)內發送這就是個windows SDk的編程問題#coding:utf-8from ctypes import *WM_SETTEXT = 0x000Cdef ChangeActiveWindowTtile(): hwnd=windll.user32.FindWindowW(u"Notepad",u"無標題 - 記事本") if (windll.user32.IsWindow(hwnd)):windll.user32.SendMessageW(hwnd,WM_SETTEXT,None,u"我是標題") ChangeActiveWindowTtile()

為什么用SendMessage函數向窗口發送WM消息處理機制是Windows特有的機制,向窗口發送消息,最簡單就是這個API了,還有一個是postmessage 。
SendMessage:是等待接受窗口處理完成然后返回結果;
postmessage:是不等接受窗口處理;

VB中sendmessage具體用法SendMessage
說明
調用一個窗口的窗口函數 , 將一條消息發給那個窗口 。除非消息處理完畢,否則該函數不會返回 。SendMessageBynum,SendMessageByString是該函數的“類型安全”聲明形式
用法:
SendMessage 窗口句柄,消息標識符(也就是SendMessage需要做什么),消息標識符的反回值 , 消息標識符的反回值
返回值
Long,由具體的消息決定
參數表
參數 類型及說明
hwnd Long,要接收消息的那個窗口的句柄
wMsg Long , 消息的標識符--取決定作用
wParam Long,具體取決于消息
lParam Any , 具體取決于消息
SendMessage 用法大全
消息標識符 用途 wParam Long lParam Long 返回值
BM_CLICK=&HF5 向目標窗口發送Click指令 0 0 非零表示成功
EM_GETLINECOUNT = &HBA 獲取目標窗口文本總行數 0 0 返回行數
EM_GETLINE= &HC4 將目標窗口的第wParam行的內容顯示在lParam中 常數,第幾行,第一行為0 String字符串數組





例1多行TextBox中的快速處理功能在處理多行TextBox時我們經常會碰到以下幾種情況:
希望了解多行TextBox中目前共有多少行文字 。
想快速返回第N行的文字 。

用SendMessage函數完成上面兩個任務的方法非常簡單,每個任務只需簡單地發送一條消息給多行TextBox即可,兩個消息分別為:EM_GETLINECOUNT、EM_GETLINE,其它參數和返回值見附表 。
下面用一個簡單的實例演示這兩個功能:
新建工程,在Form1上添加三個TextBox(名稱分別為Text1-3,將Text1的MultiLine屬性置為True)和一個命令按鈕

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
Const EM_GETLINECOUNT = &HBA
Const EM_GETLINE = &HC4
Private Sub Command1_Click()
Dim str(256) As Byte
str(1) = 1 '最大允許存放256個字符
'獲取總行數,結果顯示在文本框text2中
Text2 = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0)
'獲取第3行的數據放在str中 , 轉換為字符串后顯示在文本框text3中
SendMessage Text1.hwnd, EM_GETLINE, 2, str(0)
Text3 = StrConv(str, vbUnicode)
End Sub

兩點補充說明:在調用SendMessage獲取第N行字符串時,lParam需要說明為字節數組,在調用完成后,再將字節數組轉換為字符串;另外,調用前必須在lParam的前兩個字節指明允許存放的最大長度,其中第一個字節為低位,第二個字節為高位,本例將高位(即str(1))置1.說明最大允許存放256個字符 。
~~~~~~~`
我自己的筆記,你自己慢慢看吧 。。

c# 中如何通過sendMessage或postMessage給桌面最頂層的窗體發送一個回車?using System.Runtime.InteropServices; [DllImport("user32.dll")] private static extern IntPtr GetForegroundWindow();[DllImport("user32.dll ")]static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);private void button1_Click(object sender, EventArgs e){ IntPtr hwnd = GetForegroundWindow();//取前臺窗體句柄 SendMessage(hwnd, 256, 0xD, 0);//按下回車鍵 //SendMessage(hwnd, 257, 0xD, 0);//彈起回車鍵}

C++如何通過SENDMESSAGE發送全選命令,最終結果是想復制一個編輯框中的內容全?。粗頻郊秈搴薌虻?。

但你說的“將復制的內容貼到一個文本文件中”是什么意思?
這文本文件是另一程序正在編輯的?
還是在同一程序的另一個編輯框里正編輯著?
還是根本沒有打開的磁盤文件 。

SendMessage()函數的 第二、三、四個參數是什么 怎么用第二個參數是發送給窗體的消息,比如WM_CLOSE,WM_DESTROY之類的
第三個參數和第四個參數對于不同的消息意義也不一樣 , 比如在WM_LBUTTONDOWN消息里wParam表示鼠標左鍵按下時的組合鍵信息,lParam則包含了鼠標點擊的坐標,而在WM_CLOSE里這兩個參數都沒有被用到 。對于不同的消息wParam和lParam表示的意義具體要查看msdn 。

SendMessage(GetDlgItem(hwnd,IDC_LSTINFO),LB_ADDSTRING,0,LPARAM("名稱\t類型\t\t總大小\t可用空間"));
LB_ADDSTRING是個listbox消息 , 作用是給listbox窗口(SendMessage的第一個參數)添加一個新項 , 在這個消息里wParam沒有用,所以給它了一個0值 , lParam里則包含了要被添加的字符串 , 
LPARAM("名稱\t類型\t\t總大小\t可用空間")這個是c++的類型強轉,把這個字符串從char*轉成LPARAM類型才能編譯通過,因為SendMessage里它的參數類型就是LPARAM

參考: http://msdn.microsoft.com/en-us/library/bb775181%28VS.85%29.aspx

請問:C++中SendMessage函數怎么用?(我已經知道那幾個參數 , 最好有一個實例?。┬恍唬?/h3>百科 http://baike.baidu.com/view/1080187.htm SendMessage,帶有各種語言的例子 。

SendMessage
函數功能
該函數將指定的消息發送到一個或多個窗口 。此函數為指定的窗口調用窗口程序,直到窗口程序處理完消息再返回 。而和函數PostMessage不同,PostMessage是將一個消息寄送到一個線程的消息隊列后就立即返回 。
函數原型
LRESULT SendMessage(HWND hWnd,UINT Msg , WPARAM wParam,LPARAM IParam);
參數:
hWnd:其窗口程序將接收消息的窗口的句柄 。如果此參數為HWND_BROADCAST , 則消息將被發送到系統中所有頂層窗口,包括無效或不可見的非自身擁有的窗口、被覆蓋的窗口和彈出式窗口,但消息不被發送到子窗口 。
Msg:指定被發送的消息 。
wParam:指定附加的消息特定信息 。
lParam:指定附加的消息特定信息 。

VC++ 中CWnd::SendMessage( )函數的作用是什么?SendMessage(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);
這個函數的第一個參數是你要發送到的窗口的句柄,第二個參數是消息的號碼,如果是系統自定義消息的話可以直接用,如果是你自定義消息的話需要自己指定一個值,可以在頭文件里用宏進行定義,如:
#define WM_MY_MESSAGE (WM_USER+1)
WM_USER 是系統預留給用戶的自定義消息的最小值,所有大于這個值的消息都是自定義消息.你也可以用常量代替:
const UINT WM_MY_MESSAGE = WM_USER+1
后面的兩個參數就是windows消息的兩個32位參數.

SendMessage函數 , 參數問題WM_LBUTTONDOWN 消息的第二個參數是一個 DWORD 值,它的低位代表鼠標點擊的 x 坐標而高位代表鼠標點擊的 y 坐標 。由于 Windows 系統是 32 位系統,而 DWORD 事實上也是對 int 類型的重新定義 , 它占用的內存大小是 4 字節 。(BYTE 字節,WORD 即字 = 2 個 BYTE,DWORD 即雙字 = 2 個 WORD) 。一個 32 位數字,其中前 16 部分所代表的數值就稱為高位,而后 16 位部分稱為低位 。比如一個 x、y 坐標(1, 1)用上述參數的二進制或十六進制表示法就是:00000000000000010000000000000001 或 0x00010001同理 , 坐標(21, 192)表示為:00000000000101010000000011000000 或 0x001500C0其中 10101/11000000 就是 21/192 的二進制表示法,15/C0 則是其十六進制表示法 。可以看出,其實高位字節其實就是把 y 坐標所代表的二進制值向左移動了 16 位 , 即 y << 16 , "<<" 是 C/C++ 中的位移運算符 。微軟使用該 DWORD 值用來表示一個點在屏幕上的位置 。事實上該 DWORD 值也可以表示一個 POINTS 結構體,它是由兩個 short 數值組成 。這樣理解起來更加明了 。Windows 提供了一個宏 MAKELPARAM , 故語句也可以寫成:SendMessage(hwnd, WM_LBUTTONDOWN, 0, MAKELPARAM(x, y));該宏定義如下:#define MAKELPARAM(l, h) ((LPARAM) MAKELONG(l, h))#define MAKELONG(a, b) ((LONG) (((WORD) (a)) | ((DWORD) ((WORD) (b))) << 16))宏 MAKELPARAM:http://msdn.microsoft.com/en-us/library/ms632661.aspxPOINTS結構體:http://msdn.microsoft.com/en-us/library/dd162808.aspx關于 WM_LBUTTONDOWN 消息及其參數的說明,可以查看 MSDN 。http://msdn.microsoft.com/en-us/library/ms645607.aspx

vc中怎么使用SendMessage自定義消息函數SendMessage的基本結構如下:SendMessage(HWNDhWnd,//消息傳遞的目標窗口或線程的句柄 。UINTMsg,//消息類別(這里可以是一些系統消息,也可以是自己定義 , 下文具體介紹,)WPARAMwParam, //參數1 (WPARAM 其實是與UINT是同種類型的,//在vc編譯器中右鍵有個“轉到WPARAM的定義”的選項可以查看 。LPARAMlParam); //參數2其中一些參數的由來如下://typedef unsigned int UINT;//typedef UINT WPARAM;//typedef LONG LPARAM;//typedef LONG LRESULT;例如可以用以下語句:::SendMessage(this-m_hWnd, WM_MY_DOSOME, (WPARAM) 0, (LPARAM)0);這里我發送的消息是本窗體接收的,所以句柄用:this-m_hWnd這里的消息類別WM_MY_DOSOME就是我自定義的 , 在接收消息的窗體或線程所在的頭文件里:#define WM_MY_DOSOMEWM_USER+1//do something當然你還可以定義更多如:

請教SendMessageEMusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

const int WM_SETTEXT = 0x000C;

[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);

private void button1_Click(object sender, EventArgs e)
{
SendMessage(this.textBox1.Handle,WM_SETTEXT,(IntPtr)0,"A");
}
}
}

如何用SendMessage 更新ListCtrlActiveX控件用于Web的過程是將控件嵌入主頁中,用戶通過瀏覽器訪問該主頁時,將主頁中的控件下載,并在用戶機器上注冊,以后就可在用戶的瀏覽器上運行 。
控件下載一次后就駐留在用戶本地機器上,下次再訪問相同的主頁時 , 可不再下載該控件,而是直接運行用戶本地的控件 。這里控件容器就是瀏覽器,用戶不需要通過瀏覽器調用控件的屬性或方法 。
因此,開發面向Web的ActiveX控件比開發桌面的控件還要簡單些,所復雜的是如何將該控件很好地嵌入主頁,使用戶能正常瀏覽 。

求sendmessage的所有消息常數