精华内容
下载资源
问答
  • 一个微小的PoC,可使用WM_SETTEXT + WM_COPYDATA + SetThreadContext将代码注入并执行到explorer.exe中 PoC code: Inject Explorer.exe process. APIs used: SendMessage(WM_SETTEXT), SendMessage(WM_COPYDATA), ...
  • 1.在MainFrm.h中声明消息响应函数:afx_msg LRESULT OnSetText( WPARAM wParam, LPARAM lParam); 2.在MainFrm.cpp中建立消息WM_SETTEXT和响应函数OnSetText的映射:  BEGIN_MESSAGE_MAP

    1.在MainFrm.h中声明消息响应函数:afx_msg LRESULT OnSetText( WPARAM wParam, LPARAM lParam);

    2.在MainFrm.cpp中建立消息WM_SETTEXT和响应函数OnSetText的映射:                                        

    BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    	ON_WM_CREATE()
    	ON_MESSAGE(WM_SETTEXT, OnSetText)
    END_MESSAGE_MAP()


    3.在MainFrm.cpp中建立实现OnSetText函数体:                                                            

    LRESULT CMainFrame::OnSetText( WPARAM wParam, LPARAM lParam)
    {
    	lParam = (LPARAM)_T("程序标题");
    	DefWindowProc (WM_SETTEXT, wParam, lParam);
    	Invalidate();
    	return 0;
    }


    4.这样程序在启动的时候就会调用OnSetText函数,实现程序标题的设置。

    展开全文
  • 处理WM_SETTEXT消息的尴尬 [已结帖,结帖人:kbkman] .[华 软 网]编程论坛 楼主 这个问题已经我已经发过帖,而且网上找了很久,都没有找到答案,我重新整理一下,把问题说明白 前因:我想在自己的软件中实现一套...

    处理WM_SETTEXT消息的尴尬 [已结帖,结帖人:kbkman]   .
    [华 软 网]
    编程论坛  楼主 这个问题已经我已经发过帖,而且网上找了很久,都没有找到答案,我重新整理一下,把问题说明白

    前因:我想在自己的软件中实现一套自己做的皮肤
    问题:在处理WM_SETTEXT消息时,如果把该消息交给DefWindowProc,那么Caption区会被Windows重新绘制。如果不把他交给DefWindowProc,那么任务栏上的窗口按钮的标题不被更成新的标题

    暂时的解决方法:先交给DefWindowProc处理,等Windows绘制完Caption区后,然后再自己再绘制覆盖Caption区。这个方法虽然可以解决上面的问题,但又带来一个严重的缺点,就是这样会引发Caption区闪烁,如果在接受频繁WM_SETTEXT消息时,闪烁会相当严重,显然任何做皮肤的软件商都不会希望这样。

    这个问题我已经困扰好久,也没有看到任何人提过类似的问题,相当郁闷,希望大家帮帮忙,分数绝不会少     .
    [华 软 网]
    编程论坛 1 个网友回答: 用WM_NCPAINT消息,在这里重绘你的标题栏,但当移动窗口,点击标题栏、调整窗口大小等情况都有可能使原来的标题栏出现,所以在DefWindowProc里添加如下代码:
    if(message==WM_NCLBUTTONDBLCLK  ||  message==WM_NCLBUTTONDOWN)   
      return  TRUE;    .
    [华 软 网]
    编程论坛 2 个网友回答: 楼上的,这些消息我都处理了,我现在说的是WM_SETTEXT,这条消息。    .
    [华 软 网]
    编程论坛 3 个网友回答: 也可以考虑在调用DefWindowProc前先把WS_CAPTION风格去掉,调用完后再加上。 

     

    这个是有效的,至少初步试验是有效的。

    转载于:https://www.cnblogs.com/kevinzhwl/archive/2010/05/24/3878928.html

    展开全文
  • 1、使用 WM_COPYDATA 消息 发送数据的一方:(获得句柄的方法,最简单的方法就是使用FindWindow,找窗口类,或者名,如果你觉得这样不把握,那就利用SetProp个窗口做个记号....见文章“使用信号量找到窗口句柄”)...

    1、使用 WM_COPYDATA 消息

    发送数据的一方:(获得句柄的方法,最简单的方法就是使用FindWindow,找窗口类,或者名,如果你觉得这样不把握,那就利用SetProp个窗口做个记号....见文章“使用信号量找到窗口句柄”)

    1. CString strWindowTitle =  _T("ClientDemo");    
    2.     CString strDataToSend = _T("Hello, Everyone fsdfsdfsdfdsfds,this is a test demo!");    
    3.     
    4.     HWND hOtherWnd = ::FindWindow(NULL, strWindowTitle.GetBuffer(0));    
    5.     if (hOtherWnd != NULL && ::IsWindow(hOtherWnd))    
    6.     {    
    7.         COPYDATASTRUCT cpd;    
    8.         cpd.dwData = 0;    
    9.         cpd.cbData = strDataToSend.GetLength() * sizeof(TCHAR);    
    10.         cpd.lpData = (void*)strDataToSend.GetBuffer(0);    
    11.         HRESULT hResult = ::SendMessage(hOtherWnd, WM_COPYDATA, (WPARAM)(AfxGetApp()->m_pMainWnd), (LPARAM)&cpd);    
    12.         strDataToSend.ReleaseBuffer();    
    13.     }    

    接收数据的一方

    ON_WM_COPYDATA()

    afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);

    1. BOOL CClientDemoDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)    
    2. {    
    3.     if (pCopyDataStruct != NULL)    
    4.     {    
    5.         LPCTSTR pszText = (LPCTSTR)(pCopyDataStruct->lpData);    
    6.         DWORD dwLength = (DWORD)(pCopyDataStruct->cbData);    
    7.         TCHAR szRecvText[1024] = {0};    
    8.         memcpy(szRecvText, pszText, dwLength);    
    9.         MessageBox(szRecvText, _T("Test"), MB_OK);    
    10.     }    
    11.     
    12.     return CDialog::OnCopyData(pWnd, pCopyDataStruct);    
    13. }   

    2、使用 WM_SETTEXT 消息

    发送方:

    1. CString str = _T( "Hello" );  
    2. HWND hWndReceived = FindWindow( "Receiver", NULL );  
    3. SendMessage( hWndReceived, WM_SETTEXT, 0, (LPARAM) str );  

    接受方:

    ON_MESSAGE( WM_SETTEXT, OnSetTextMsg )

    1. afx_msg void OnSetTextMsg( WPARAM wParam, LPARAM lParam)  
    2. OnSetTextMsg( WPARAM wParam, LPARAM lParam )  
    3. {  
    4. char str[ 256 ];  
    5. wsprintf( str, "%s", (char*) lParam );  
    6. }
    7. 3、其他方法,如:使用内存映射文件 

    8. 通过共享内存DLL共享内存(进程间发送的内存需为完整的内存,不能在结构体中套结构体,不能让指针等于不完整的内存COPYDATASTRUCT* pCpd = new COPYDATASTRUCT;  
    9.             pCpd->dwData = 1;  
    10.             pCpd->cbData = sizeof(int) + mBackupDataPath.GetLength()*sizeof(TCHAR);  
    11.             pCpd->lpData = new BYTE[pCpd->cbData];     
    12.             *((int*)pCpd->lpData) = 1; //设置备份路径 1  
    13.             memcpy((LPVOID)((int*)pCpd->lpData + 1), mBackupDataPath.GetBuffer(0), mBackupDataPath.GetLength()*sizeof(TCHAR));  
    14.             ::SendMessage(callInstanceHwnd, WM_COPYDATA, NULL,(LPARAM)pCpd);  
    15.             mBackupDataPath.ReleaseBuffer();  
    16.             delete pCpd->lpData;  
    17.             delete pCpd;
    18. 4、 邮槽,剪切板,命令行

    展开全文
  • invoke SendMessage,_hWindow,WM_SETTEXT, 0 ,offset _szSendText .else invoke MessageBox,NULL,offset _szNoFindTxet,offset _sztitle,MB_OK .endif invoke ExitProcess,NULL _Win32Main endp start: Call _...
    接受代码
    .386
    .model flat,stdcall
    option casemap:none

    include user32.inc
    includelib user32.lib
    includelib kernel32.lib
    include kernel32.inc
    include windows.inc


    .data

    _className db "MyClass",0
    _szBuffer db 256 dup(?)

    _swTitle db "测试标题",0
    _szReceive db "hello Window",0dh,0ah
    db "param:%08x",0dh,0ah
    db "text:%s",0


    .data?
    _hInstance dd ?
    _hWinMan dd ?
    .const
    .code




    ;消息过程
    _ProcMain proc uses ebx edi esi hWnd,uMsg,wParam,lParam

    mov eax,uMsg
    ;--------------------------------------------------------------------------------
    .if eax==WM_PAINT
    invoke DefWindowProc,hWnd,uMsg,wParam,lParam
    ret
    .elseif eax==WM_CLOSE

    invoke DestroyWindow,_hWinMan
    invoke PostQuitMessage,NULL
    ;.elseif eax==WM_CREATE

    .elseif eax==WM_SETTEXT
    invoke wsprintf,offset _szBuffer,offset _szReceive,lParam,lParam
    invoke MessageBox,NULL,offset _szBuffer,offset _swTitle,MB_YESNO
    .else
    invoke DefWindowProc,hWnd,uMsg,wParam,lParam
    ret
    .endif
    ;or eax,eax
    ret
    ;--------------------------------------------------------------------------------
    _ProcMain endp
    ;后缀EX扩展的意思。代码书写格式为易读性 st结构 h模块 _全局 @局部
    _Win32Main proc
    LOCAL @stWNDClass:WNDCLASSEX
    LOCAL @stMSG:MSG

    invoke GetModuleHandle,NULL
    mov _hInstance,eax
    ;初始化
    invoke RtlZeroMemory,addr @stWNDClass,sizeof @stWNDClass

    invoke LoadCursor,0,IDC_ARROW ;获取鼠标模块
    ;结构
    mov @stWNDClass.hCursor,eax
    ; push _hInstance;1
    ;pop @stWNDClass.hInstance;1

    mov @stWNDClass.hInstance,offset _hInstance;2 上面的1 和这里的2 有什么不同 这两句为什么实现的不是一个效果 有什么不同?
    mov @stWNDClass.cbSize,sizeof WNDCLASSEX
    mov @stWNDClass.hbrBackground,COLOR_WINDOW
    mov @stWNDClass.lpszClassName,offset _className
    mov @stWNDClass.lpfnWndProc,offset _ProcMain
    mov @stWNDClass.style,CS_HREDRAW or CS_VREDRAW

    invoke RegisterClassEx,addr @stWNDClass

    ;创建窗口
    invoke CreateWindowEx,WS_EX_CLIENTEDGE,offset _className,offset _swTitle,WS_OVERLAPPEDWINDOW,\
    100,100,444,555,\
    NULL,NULL,_hInstance,NULL
    mov _hWinMan,eax
    ;显示窗口
    invoke ShowWindow,_hWinMan,SW_SHOWNORMAL
    ;刷新绘制 发送WM_PAINT消息
    invoke UpdateWindow,_hWinMan
    ;消息循环
    ;GetMessage 如果取得的MSG是WM_QUIT EAX就等于0,否则非零
    ;PeekMessage 有消息返回非零,否则直接返回EAX等于0
    .while TRUE

    invoke GetMessage,addr @stMSG,NULL,0,0
    .break .if eax==0
    invoke TranslateMessage,addr @stMSG
    invoke DispatchMessage,addr @stMSG

    .endw

    ret


    _Win32Main endp


    start:
    Call _Win32Main
    invoke ExitProcess,NULL
    end start
    发送代码
    .386
    .model flat,stdcall
    option casemap:none

    include user32.inc
    includelib user32.lib
    includelib kernel32.lib
    include kernel32.inc
    include windows.inc


    .data
    _szNoFindTxet db "没有找到窗口",0
    _szYesFindTxet db "点击OK 开始发送消息 %08x",0
    _szSendText db "test send Message",0
    _sztitle db "send Message",0
    _className db "Myclass",0
    _szTiShi db "开始寻找",0
    _szBuffer db 256 dup(?)
    .data?
    _hInstance dd ?
    _hWindow dd ?
    .const
    .code



    ;后缀EX扩展的意思。代码书写格式为易读性 st结构 h模块 _全局 @局部
    _Win32Main proc
    invoke MessageBox,NULL,offset _szTiShi,offset _sztitle,MB_OK
    invoke FindWindow,offset _className,NULL
    mov _hWindow,eax
    .if eax
    invoke wsprintf,offset _szBuffer,offset _szYesFindTxet,offset _szSendText
    invoke MessageBox,NULL,offset _szBuffer,offset _sztitle,MB_OK
    invoke SendMessage,_hWindow,WM_SETTEXT,0,offset _szSendText
    .else
    invoke MessageBox,NULL,offset _szNoFindTxet,offset _sztitle,MB_OK
    .endif

    invoke ExitProcess,NULL
    _Win32Main endp


    start:
    Call _Win32Main
    invoke ExitProcess,NULL
    end start


    PostMessage和SendMessage

    差别在于,postmessage 该函数不能用户任何参数中用到的指针ps:WM_COPYDATA

    转载于:https://www.cnblogs.com/yueyue184/archive/2011/12/02/2271919.html

    展开全文
  • 但我发现 windows 的消息里,wm_gettext 和 wm_settext 是没有区分 unicode 和 ansi 的 那么这个消息是怎么区分 lparam 里的参数究竟是 char 还是 wchar_t??? 网上(包括msdn)都说只要传递 TCHAR 类型,系统...
  • VC中,SendMessage发WM_GETTEXT/WM_SETTEXT消息怎样获取/设置控件的内容,如编辑框怎么做啊,初学,不知道怎么做,谢谢帮忙
  • 因为对于我们要设置文本框信息的WM_SETTEXT信息来说,设置成功将返回True。 SendMessage(hWnd, Msg, wParam, lParam) 描述:在消息队列中加入为指定的窗体加入一条消息,直到窗体处理完信息才返回。 ...
  • 我分别试了发送WM_SETTEXT与WM_PASTE都不成功,settext消息改变了标题栏标题,pates消息没任何效果。 [img=https://img-bbs.csdn.net/upload/201504/03/1428068922_99043.jpg][/img]
  • 我派生了一个CStatic类,主要是自定义标签显示的字体及去掉背景。 在类中重载了OnPaint、CtlColor及...所以请教下大家,有没有什么方法拦截WM_SETTEXT所执行的函数,把系统重写标签的过程作我自己的过程来替代。
  • WM_SETTEXT中第一个参数wParam必须为0,lParam是指向发送的字符串的首地址。 通过以上三个函数的配合,可以向目标窗口发送消息。 另外的有关API函数有COPYDATASTRUCT: typedef struct tagCOPYDATASTRUCT { /...
  • 我使用SendMessage修改Pdf另存为对话框中的文件名,已经抓到EDIT的句柄,但是写入时是乱码,用WM_COPYDATA没响应,用WM_SETTEXT可以发送,但是文件名那里是乱码。可能是因为系统默认Unicode,但是另存为对话框的...
  • 环境是这样的,电脑上面有两个程序同时运行,其中程序A向程序B发送一些字符串,发送方式是利用SengMessage(WM_SETTEX),或者 SetWindowText,其实本质上,两种方式是一样的,因为SetWindowText最后也是转换为...
  • 在显示进度时需要显示百分比从0%---100%,添加Edit control控件,在文件拷贝时往往需要线程来做拷贝,从线程中发现消息给控件,SendMessage(GetDlgItem(hWndDlg,IDC_EDIT_PROGRESS),WM_SETTEXT,0,(LPARAM)...
  • WM_SETTEXT 这些消息中,发送的只能是以 0 为结尾的字符串。szText db 'Text send to other windows',0 为了支持在 窗口间 任意的消息拷贝,windows提供了 WM_COPYDATA 消息。 WM_COPYDATA用一个 COPYDATASTRUCT ...
  • VC中的所有WM消息.doc

    2020-04-02 12:54:35
    1. windows消息WM_ 2. WM_NULL = $0000; 3. WM_CREATE = $0001; 4. 应用程序创建一个窗口 5. WM_DESTROY = $0002; 6. 一个窗口被销毁 7. WM_MOVE = $0003;...8. 移动一个窗口 ...21. WM_SETTEXT = $000C;
  • 跨进程通信SendMessage - C#, WM_SETTEXT, WM_GETTEXT
  • 跨进程通信SendMessage - VB.NET, WM_SETTEXT, WM_GETTEXT
  • windows消息常量值

    2020-09-17 08:45:23
    WM_NULL = 0 WM_CREATE = 1 应用程序创建一个窗口 WM_DESTROY = 2 一个窗口被销毁 WM_MOVE = 3 移动一个窗口 WM_SIZE = 5 改变一个窗口的大小 WM_ACTIVATE = 6 ...WM_SETTEXT = 12 应用程序发送此消息
  • Wpf发送接收 win32消息

    2019-03-07 11:30:00
    #region WPF发送和接收win32消息 public const int WM_GETTEXT = 0x0D; public const int WM_SETTEXT = 0x0C; public const int WM_SIZEING = 0x0214; public const int WM_COPYDATA...
  • msg类型

    2015-01-03 20:05:00
    WM_CREATE 创建一个窗口WM_DESTROY 当一个窗口被破坏时发送WM_MOVE 移动一个窗口WM_SIZE 改变一个窗口的大小WM_ACTIVATE ...ENABLE 一个窗口改变成Enable状态WM_SETREDRAW 设置窗口是否能重画WM_SETTEXT 应用程序发...
  • Windows 消息大全

    2020-11-20 17:18:07
    WM_ :窗口消息 窗口消息 // 自身 WM_ERASEBKGND // 当窗口背景必须被擦除...WM_SETTEXT // 设置与窗口对应的文本 WM_GETTEXTLENGTH // 确定与窗口关联的文本的长度(以字符为单位)。 WM_SETICON // 将
  • private const int WM_SETTEXT = 0x000C; 是一个常量 '这里是用SendMessage方法在写字板中输入内容的代码片段: private const int WM_SETTEXT = 0x000C; [DllImport("user32.dll")] private static extern IntPtr...
  • 求大神!...我使用SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)szText);可以获取没有PASSWORD属性的编辑框内的文本,获取不了带ES_PASSWORD属性的编辑框内的文本。 GetWindowText(hWnd, str, 100);也不性
  • 我用SendMessage发送WM_SETTEXT向其它程序中的灰色的EDITBOX控件以改变其内容,原来的内容被清空,新内容也没有被添加。自己写了个窗口,内有EDITBOX控件,也是灰色,能成功改变内容,是不是目标窗口屏蔽了WM_...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 124
精华内容 49
关键字:

wm_settext